python迭代按值排序的字典

时间:2014-10-30 09:34:08

标签: python sorting dictionary

下面的一段代码。任何人都可以解释为什么迭代字典,最后一行,已经按值排序仍然输出字典没有按值排序?当我尝试保存字典时,同样适用。

#!/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

2 个答案:

答案 0 :(得分:1)

Dict永远不会按照定义排序。您可能想要使用collections.OrderedDict

答案 1 :(得分:0)

dict没有固有的顺序,因此排序没有意义。如果你想要按特定顺序使用key:value对,只需循环遍历有序键列表,就像在你的第一个循环中一样。