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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17555218/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 08:30:38  来源:igfitidea点击:

Python - How to sort a list of lists by the fourth element in each list?

pythonlistsorting

提问by Dana Gray

I would like to sort the following list of lists by the fourth element (the integer) in each individual list.

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

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

How can I do this? Thank you!

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

回答by Taymon

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

回答by Sukrit Kalra

Use sorted()with a keyas follows -

使用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']]

The lambdareturns the fourth element of each of the inner lists and the sortedfunction uses that to sort those list. This assumes that int(elem)will not fail for the list.

所述lambda返回每个内部列表和的第四元件sorted函数使用排序那些列表。这假设int(elem)列表不会失败。

Or use itemgetter(As Ashwini's comment pointed out, this method would not work if you have string representations of the numbers, since they are bound to fail somewhere for 2+ digit numbers)

或使用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']]