在Python中对一个二维列表进行排序

4

我有一个二维列表:

mylist = [[9,7, 2, 2], [1,8, 2, 2], [2,9, 2, 2]]

使用排序函数,列表会以这种方式排序:
[[1, 8, 2, 2], [2, 9, 2, 2], [9, 7, 2, 2]]

但是我想按照以下方式对这个列表进行排序:
[[9, 7, 2, 2],[1, 8, 2, 2], [2, 9, 2, 2]]

我想按列表的最后一个数字进行排序,而不是第一个数字,就像使用排序函数一样-它按列表的第一个数字排序。我想按最后一个数字排序,例如7比8和9小,因此7排在首位。


4
列表.sort(key=lambda x: x[::-1]) - Primusa
2个回答

5

使用 sorted() 结合 lambda 函数 尝试这个

In [1]: a=[[9, 7, 2, 2],[1, 8, 2, 2], [2, 9, 2, 2]]
In [4]: sorted(a,key=lambda a:a[::-1])
Out[4]: [[9, 7, 2, 2], [1, 8, 2, 2], [2, 9, 2, 2]]

在你的回答中,你将它修正为第二位数,我想按照从末尾开始查看的方式进行排序,如果最后一位数字相同,则应该查看倒数第二位数字。 - tarunsharma967

3

您可以尝试以下方法:

sorted(a,key=lambda a:list(reversed(a)))

输出:

[[9, 7, 2, 2], [1, 8, 2, 2], [2, 9, 2, 2]]

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