首页 > 解决方案 > 按第 3、第 2、第 1 个元素对列表进行排序

问题描述

我有一个列表,如:

[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]

如何按每个子数组中的第 3 个元素,然后按 eacy 子数组中的第 2 个元素,然后按第一个元素的升序对这个(最好在 Python 中)进行排序?

标签: pythonpython-3.xlistsorting

解决方案


您可以在参数中使用sortedwith以相反的顺序获取项目:itemgetterkey

from operator import itemgetter
l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],[19,9,44]]

sorted(l, key=itemgetter(2,1,0))
# [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]

或使用 lambda 函数:

sorted(l, key=lambda x: x[::-1])
# [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]

推荐阅读