2

重複の可能性:
python ループはシーケンスに従っていないようです?
Pythonは辞書キーをどのような順序で表示しますか?

d = {'x': 9, 'y': 10, 'z': 20}
for key in d: 
    print d[key]

上記のコードは、実行するたびに異なる出力を提供します。正確に異なる出力ではありませんが、異なる順序で出力します。Aptana 3 を使用してコードを複数回実行しました。

最初の実行結果: 10 9 20

2回目の処刑:20 10 9

また、オンライン IDE http://labs.codecademy.comでコードを実行しました。出力は常に 10 9 20 でした

これがなぜなのか知りたかっただけです。理想的には、上記のコードを実行するたびに 9 10 20 を出力する必要があります。説明してください。

4

2 に答える 2

3

A dictionary is a mapping of keys to values; it does not have an order.

You want a collections.OrderedDict:

collections.OrderedDict([('x', 9), ('y', 10), ('z', 20)])
Out[175]: OrderedDict([('x', 9), ('y', 10), ('z', 20)])

for key in Out[175]:
    print Out[175][key]

Note, however, that dictionary ordering is deterministic -- if you iterate over the same dictionary twice, you will get the same results.

于 2013-01-31T12:52:15.550 に答える
1

ディクショナリは、順序付けられていないコレクションです。したがって、理論的には、要素の順序は、実行する操作ごとに変わる可能性があります。キーを順番に印刷したい場合は、印刷する前にそれらをソートする必要があります (つまり、キーを収集してからソートします)。

于 2013-01-31T12:50:55.480 に答える