而不是以字符串形式排序并在之后解析,最好先解析,然后排序。
>>> import csv
>>> from operator import itemgetter
>>> text = ['something , 3', 'something else , 1', 'something this , 2']
>>> list(map(itemgetter(0), sorted(csv.reader(text), key=itemgetter(1))))
['something else ', 'something this ', 'something ']以下是解释的步骤:
# First parse the commas into separate fields
csv.reader(text)
\--> [['something ', ' 3'], ['something else ', ' 1'], ['something this ', ' 2']]
# Then sort using the second field as the key
sorted(_, key=itemgetter(1))
\--> [['something else ', ' 1'], ['something this ', ' 2'], ['something ', ' 3']]
# The extract just the field
list(map(itemgetter(0), _))
\--> ['something else ', 'something this ', 'something ']正如@donkopotamus所提到的,您可以用key=lambda x: int(x[1])替换键函数,以数字方式而不是按字母顺序排序。