下面的一段代码。任何人都可以解释为什么迭代字典,最后一行,已经按值排序仍然输出字典没有按值排序?当我尝试保存字典时,同样适用。
#!/usr/bin/python
x = {1: 2999, 3: 4, 4: 3, 2: 1, 0: 0 }
srtkeys = sorted(x, key=x.get)
ds={}
print "\ncreating dict sorted by values"
for w in srtkeys:`enter code here`
print w,x[w]
ds[w] = x[w]
print "\nprinting dict sorted by values"
print ds
print "\niterating over dict sorted by values"
for k,v in ds.iteritems():
print str(k)+":"+str(v)
输出:
creating dict sorted by values
0 0
2 1
4 3
3 4
1 2999
printing dict sorted by values
{0: 0, 1: 2999, 2: 1, 3: 4, 4: 3}
iterating over dict sorted by values
0:0
1:2999
2:1
3:4
4:3
答案 0 :(得分:1)
Dict永远不会按照定义排序。您可能想要使用collections.OrderedDict
答案 1 :(得分:0)
dict没有固有的顺序,因此排序没有意义。如果你想要按特定顺序使用key:value对,只需循环遍历有序键列表,就像在你的第一个循环中一样。