如何按内层列表的特定索引排序列表?

313 投票
12 回答
396596 浏览
提问于 2025-04-16 07:02

我有一个列表,里面又包含了很多其他列表。比如说,

[
[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函数的速度会慢一些。

撰写回答