我想按照每个单独列表中的第四个元素(整数)对以下列表进行排序。
unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
我怎么能这么做? 谢谢!
unsorted_list.sort(key=lambda x: x[3])
将 sorted()与 key一起使用,如下所示
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)不会因为列表而失败。
lambda
sorted
int(elem)
或者使用 itemgetter(正如 Ashwini 的评论所指出的,如果使用数字的字符串表示,这种方法将无法工作,因为对于2 + 位数字,它们肯定会在某个地方失败)
itemgetter
>>> 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']]