2017-06-13 5 views
-1

は、私は次のキーと値のペアを持つ辞書を初期化:私は同じことを印刷したときにPythonの辞書の初期化

count = {"a":0, "b":0, "c":0, "d":0, "e":0, "f":0, "g":0, "h":0, "i":0, "j":0, "k":0, "l":0, "m":0, "n":0, "o":0, "p":0, "q":0, "r": 0, "s":0, "t": 0, "u":0, "v":0, "w":0, "x":0, "y":0, "z":0} 

はしかし、ペアは最初と最後の一つを除いて交換されていた:

{'a': 0, 'c': 0, 'b': 0, 'e': 0, 'd': 0, 'g': 0, 'f': 0, 'i': 0, 'h': 0, 'k': 0, 'j': 0, 'm': 0, 'l': 0, 'o': 0, 'n': 0, 'q': 0, 'p': 0, 's': 0, 'r': 0, 'u': 0, 't': 0, 'w': 0, 'v': 0, 'y': 0, 'x': 0, 'z': 0} 

これは、私が解決しようとしていた問題に私に間違った答えを与えました。なぜこうなった?

+0

python辞書はソートされていないためです。 – trotta

+1

Python 3.6を除いて、どこから注文されるのですか? – vZ10

+0

@trottaこれほど単純ではありません。実装の詳細としてCPython 3.6は、キーが(OrderedDictのように)最初に挿入された順番で格納されるようになりました。 – chepner

答えて

0

注文を保存したい場合は、標準辞書の代わりにcollections.OrderedDitctを使用する必要があります。