在练习Python(3.7.3)时,我发现自己想对字典的键进行排序。但是我遇到了我不了解的东西,并且在SO上找不到解释。
编辑:我知道sort()方法会更改列表本身,而sorted()会使原始列表保持不变并返回新列表。但是有人可以解释为什么当我将它称为sort()方法时,list()构造函数似乎不再返回列表了吗?
有人可以解释为什么它什么都不返回:
>>> md = {5: 3, 2: 1, 8: 9}
>>> ml = list(md.keys()).sort()
>>> ml
>>>
如果我分两个步骤进行操作,那么它确实可以工作:
>>> ml = list(md.keys())
>>> ml
[5, 2, 8]
>>> ml.sort()
>>> ml
[2, 5, 8]
>>>
此外,我发现使用sorted()
在一行中也可以正常工作:
>>> sorted(list(md.keys()))
[2, 5, 8]
答案 0 :(得分:3)
sort
对可迭代的原位进行排序,但返回None
,该值已分配给ml
。这就是为什么REPL不显示任何内容的原因。
相反,sorted
返回原始可迭代对象的排序表示形式。
答案 1 :(得分:1)
sort()
直接对您的数组进行排序,而sorted()
返回一个 new 数组。 (Docs)