123

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

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

我怎样才能做到这一点?谢谢!

4

2 回答 2

211
unsorted_list.sort(key=lambda x: x[3])
于 2013-07-09T18:09:01.370 回答
69

使用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']]
于 2013-07-09T18:09:15.747 回答