提问人:troppapolvere 提问时间:11/3/2023 最后编辑:jonrsharpetroppapolvere 更新时间:11/3/2023 访问量:50
关于 Python 的“排序”方法是否稳定
on Python's "sorted" method being stable or not
问:
我正在尝试使用以下代码对列表数组进行排序:
from operator import itemgetter
data=[['Japan',0],['Japan',36],['Japan',21],['Germany',7]]
for line in data: print(line)
print('---')
sort1=sorted(data,key=itemgetter(0))
for line in sort1: print(line)
print('---')
sort1=sorted(sort1,key=itemgetter(1))
for line in sort1: print(line)
在 Python 3.9.5 中,我发现它没有像我预期的那样工作:
['Japan', 0]
['Japan', 36]
['Japan', 21]
['Germany', 7]
---
['Germany', 7]
['Japan', 0]
['Japan', 36]
['Japan', 21]
---
['Japan', 0]
['Germany', 7]
['Japan', 21]
['Japan', 36]
对排序的第一次调用确实首先移动了“德国”,而没有触及其余部分; 但第二个,我希望通过离开“德国”来重新排列“日本”线 在上面,没有:它重新排序了第二个字段上的所有内容。
我已经在互联网上阅读了几个小时的文献和答案, 找到了很多关于如何做到这一点的教程,例如在第 29 点:按两个字段对 Python 列表进行排序,似乎我正在做同样的事情。但显然不是。
答: 暂无答案
评论
sorted(data)