python - 按第 3、第 2、第 1 个元素对列表进行排序
问题描述
我有一个列表,如:
[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
如何按每个子数组中的第 3 个元素,然后按 eacy 子数组中的第 2 个元素,然后按第一个元素的升序对这个(最好在 Python 中)进行排序?
解决方案
您可以在参数中使用sorted
with以相反的顺序获取项目:itemgetter
key
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]]
推荐阅读
- java - Java 8+ 映射列表的映射
- django - 为什么我会收到此错误?AttributeError:“str”对象没有属性“decode”
- wordpress - Wordpress:禁用白屏死机,启用标准 PHP 错误
- android - 如何将片段存储在堆栈中?因此,一旦加载了片段 X,从另一个片段 Y 移动到 X 不会“重新加载”X
- c++ - gcc -O2 比 gcc -O2 -g 小,然后是 strip --strip-all
- r - 在 rbokeh 中格式化时间轴
- c# - 如何使用 lambda 从具有相同字段的另一条记录中更新一条记录
- java - Java JCEKS 无效的密钥库格式
- vue.js - 将组件附加到多个键
- java - Java 8 中超过 2 个 groupingBy 操作