2012-11-13 98 views
2

可能重复:
Why is python ordering my dictionary like so?怪字典迭代顺序

我有这样的完全工作代码,但奇怪的行为:在字典项目不按顺序,但不知何故,随机重复,这是为什么这?:

#!/usr/bin/python 

newDict = {} 
lunar = {'a':'0','b':'0','c':'0','d':'0','e':'0','f':'0'} 
moon = {'a':'1','d':'1','c':'1'} 

for il, jl in lunar.items(): 
    print "lunar: " + il + "." + jl 
    for im, jm in moon.items(): 
     if il == im: 
      newDict[il] = jm 
      break 
     else: 
      newDict[il] = jl 

print newDict 

输出:

lunar: a.0 
lunar: c.0 
lunar: b.0 
lunar: e.0 
lunar: d.0 
lunar: f.0 
{'a': '1', 'c': '1', 'b': '0', 'e': '0', 'd': '1', 'f': '0'} 
+1

因为字典不是一个序列。它没有秩序。 – SilentGhost

+0

和[Python字典,保持键/值与声明相同的顺序](http://stackoverflow.com/q/1867861) –

+1

还有更多.. –

回答

3

Python dict未订购。出于性能方面的原因,执行时忘记添加项目的顺序会更有效率。

由于documentation states

键和值指的是这个非随机的,不同的Python实现不同而不同,取决于插入和删除的字典的历史任意顺序列出。

如果您需要有序字典,可以使用OrderedDict