为什么用sort。()不能用.sort()在一行中排序字典键列表呢?

时间:2019-06-27 13:18:33

标签: python list sorting

在练习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]

2 个答案:

答案 0 :(得分:3)

sort对可迭代的原位进行排序,但返回None,该值已分配给ml。这就是为什么REPL不显示任何内容的原因。

相反,sorted返回原始可迭代对象的排序表示形式。

答案 1 :(得分:1)

sort()直接对您的数组进行排序,而sorted()返回一个 new 数组。 (Docs