Python - 如何按每个列表中的第四个元素对列表列表进行排序?

时间:2013-07-09 18:08:20

标签: python list sorting

我想按照每个列表中的第四个元素(整数)对以下列表进行排序。

unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]

我该怎么做? 谢谢!

2 个答案:

答案 0 :(得分:144)

unsorted_list.sort(key=lambda x: x[3])

答案 1 :(得分:42)

sorted()key一起使用,如下所示 -

>>> unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
>>> sorted(unsorted_list, key = lambda x: int(x[3]))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]

lambda返回每个内部列表的第四个元素,sorted函数使用它来对这些列表进行排序。这假定int(elem)不会因列表而失败。

或者使用itemgetter(正如Ashwini的评论指出的那样,如果您对数字进行字符串表示,则此方法不起作用,因为它们必然会因2位数字而失败)

>>> from operator import itemgetter
>>> sorted(unsorted_list, key = itemgetter(3))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]
相关问题