2012-11-13 137 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