2

重複の可能性:
Python が私の辞書をそのように順序付けているのはなぜですか?

私はこの完全に機能するコードを持っていますが、奇妙な動作をします.ディクショナリ内のアイテムは順番に繰り返されるのではなく、何らかの形でランダムに繰り返されます.なぜですか?:

#!/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'}
4

2 に答える 2

5

辞書は入力順序を保存しません。OrderedDictコレクションモジュールからクラスを試すことができます - OrderedDict 例とレシピ

于 2012-11-13T12:42:54.703 に答える
3

Pythondictは注文されていません。パフォーマンス上の理由から、項目を追加した順序を忘れた方が実装が効率的です。

ドキュメントに記載されているように:

キーと値は任意の順序でリストされます。これはランダムではなく、Python の実装によって異なり、辞書の挿入と削除の履歴に依存します。

順序付けられた辞書が必要な場合は、 を使用できますOrderedDict

于 2012-11-13T12:44:20.623 に答える