【发布时间】:2019-10-04 16:50:31
【问题描述】:
我有一个列表,例如:
[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
如何按每个子数组中的第 3 个元素,然后按 eacy 子数组中的第 2 个元素然后按第一个元素的升序对它进行排序(最好在 Python 中)?
【问题讨论】:
标签: python python-3.x list sorting
我有一个列表,例如:
[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
如何按每个子数组中的第 3 个元素,然后按 eacy 子数组中的第 2 个元素然后按第一个元素的升序对它进行排序(最好在 Python 中)?
【问题讨论】:
标签: python python-3.x list sorting
您可以在key 参数中使用sorted 和itemgetter 以相反的顺序获取项目:
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]]
【讨论】:
使用从每个子列表中检索第三个元素并使用它的键函数。
l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
l.sort(key=lambda x: x[2])
或者你可以使用itemgetter
【讨论】: