按照第一列和第二列排序2D列表

19

我正在尝试找到一个好的方法来对一个二维列表进行排序,首先按第一个值排序,然后再按第二个值排序。

我认为一个例子会是最好的。
如果我有一个列表:

[[1,4],
[2,7],
[10,1],
[1,2],
[10,6]
[2,1]]

我希望它能按照这种方式排序

[[1,2],
[1,4],
[2,1],
[2,7],
[10,1],
[10,6]]
1个回答

41
l=[[1,4],
[2,7],
[10,1],
[1,2],
[10,6],
[2,1]]
print(sorted(l,key=lambda x: (x[0],x[1]))) # use lambda to sort by "x[0]"-> first element of the sublists or x[1] -> second element, if its a tie
[[1, 2], [1, 4], [2, 1], [2, 7], [10, 1], [10, 6]]

或者简单地使用sorted(l)l.sort(),这样你的元素会自然排序。

一个更好的例子是仅按第二个值排序:

print(sorted(l,key=lambda x: (x[1])))
[[10, 1], [2, 1], [1, 2], [1, 4], [10, 6], [2, 7]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接