如何按内层列表的特定索引排序列表?
我有一个列表,里面又包含了很多其他列表。比如说,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
如果我想根据里面列表的某个字符串字段来对外面的列表进行排序,应该怎么在Python里做到呢?
12 个回答
100
Itemgetter可以让你根据多个标准或列来进行排序:
sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))
256
就地处理
>>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> l.sort(key=lambda x: x[2])
不在原地处理,使用排序:
>>> sorted(l, key=lambda x: x[2])
399
这个任务可以用itemgetter来完成。
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
当然,这里也可以用一个叫做lambda的函数,不过在这种简单的情况下,lambda函数的速度会慢一些。