为什么在Python中(dictionary.keys()).sort()不工作?
我刚开始学Python,不明白为什么这样的代码不管用。其他地方也找不到相关的问题。
toto = {'a':1, 'c':2 , 'b':3}
toto.keys().sort() #does not work (yields none)
(toto.keys()).sort() #does not work (yields none)
eval('toto.keys()').sort() #does not work (yields none)
不过如果我查看类型,就会发现我是在一个列表上调用sort(),那到底是什么问题呢……
toto.keys().__class__ # yields <type 'list'>
我唯一能让它工作的办法是加一个临时变量,这样看起来很难看。
temp = toto.keys()
temp.sort()
我这里漏掉了什么呢?肯定有更好的方法可以做到这一点。
3 个回答
1
sort()
方法是直接在原来的列表上进行排序的,它不会返回任何东西,也就是说返回的是 none
。如果你想要得到一个新的、已经排序好的列表,可以使用 sorted(toto.keys())
,这个方法会返回一个新的可迭代对象,并且是排好序的。
6
sorted(toto.keys())
这个方法应该能满足你的需求。你用的排序方法是就地排序,也就是说它会直接在原来的数据上进行排序,而不是返回一个新的排序结果,它返回的是None。
6
sort()
是用来对列表进行排序的,它会直接在原来的列表上进行操作,也就是说它不会创建一个新的排序后的列表。这个方法返回 None
是为了让你明白,它并不是把原来的列表留着不动,而是直接在原列表上进行排序。