如何在python中通过检查子列表中的值来对列表进行排序?

2024-10-06 15:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的列表:

[['a',[10]], ['b',[1]], ['c',[5,10]], ['d',[5,1,-10]], ['e',[5,1,-1]]]

我想在python中使用numeric list元素,匹配第一个元素,当它相同时,使用第二个元素,依此类推。 结果是这样的(这次我需要倒序):

^{pr2}$

谢谢!在


Tags: 元素列表格式listnumericpr2倒序
3条回答
>>> from operator import itemgetter
>>> L=[['a',[10]], ['b',[1]], ['c',[5,10]], ['d',[5,1,-10]], ['e',[5,1,-1]]]
>>> sorted(L, key=itemgetter(1), reverse=True)
[['a', [10]], ['c', [5, 10]], ['e', [5, 1, -1]], ['d', [5, 1, -10]], ['b', [1]]]
>>> 

我在这里使用itemgetter(1),它大致相当于其他答案中的lambda函数。由于子列表是条目号1,所以这可以有效地执行排序。(项目编号0为字母a-e)

我想列表比较就像你想要的,如果倒过来的话:

>>> data = [['a',[10]], ['b',[1]], ['c',[5,10]], ['d',[5,1,-10]], ['e',[5,1,-1]]
>>> sorted(data, reverse = True, key = lambda pair: pair[1])
[['a', [10]], ['c', [5, 10]], ['e', [5, 1, -1]], ['d', [5, 1, -10]], ['b', [1]]]

您的输入列表中有一个括号错误,它已在上面的代码中修复。在

使用key选择列表中的第二个元素,使用reverse更改方向:

>>> l=[['a',[10]], ['b',[1]], ['c',[5,10]], ['d',[5,1,-10], ['e',[5,1,-1]]]
>>> sorted(l, key=lambda e:e[1], reverse=True)
[['a', [10]], ['c', [5, 10]], ['e', [5, 1, -1]], ['d', [5, 1, -10]], ['b', [1]]]

列表是通过按顺序比较元素来排序的,就像词典或常规词典一样。这叫做“词法比较”。在

相关问题 更多 >