我正在使用Python排序函数来排序包含许多条目的多维列表。
示例:
sorted_list = sorted(list_not_sorted, key=lambda x:x[1], reverse=True)
有没有办法根据数字的大小对其进行排序?
假设我有以下列表:
[
[John,973],
[Jim,99],
[Jason,912345]
]
使用该代码将按如下方式对其进行排序:
[
[Jim,99],
[John,973]
[Jason,912345],
]
但我希望它像这样排序:
[
[Jason,912345],
[John,973]
[Jim,99],
]
使用此功能有什么办法吗?
为了清晰起见,编辑了问题!
答案 0 :(得分:1)
如此接近!
sorted_list = sorted(list_not_sorted, key=lambda x:x[1], reverse=True)
x[2]
超出界限(因为你的内部列表只有2个项目,这是访问第三个项目)。由于您想要关闭号码,您需要x[1]
。
>>> data = [['John', 973], ['Jim', 99], ['Jason', 912345]]
>>>
>>> sorted(data, key=lambda x:x[1], reverse=True)
[['Jason', 912345], ['John', 973], ['Jim', 99]]
答案 1 :(得分:-1)
您无需使用sorted
创建数据副本。 sort
就足够了。
>>> l
[['John', 973], ['Jim', 99], ['Jason', 912345]]
>>> l.sort(key=lambda x:x[1], reverse=True)
>>> l
[['Jason', 912345], ['John', 973], ['Jim', 99]]
如果您需要词典顺序:
>>> l.sort(key=lambda x:str(x[1]), reverse=True)