1

私は、python store key : value ペアの辞書の順序を疑問に思っていました。Pythonシェルで次のように書きましたが、キーと値のペアを格納する順序の理由がわかりません。

>>> d = {}
>>> d['a'] = 8
>>> d['b'] = 8
>>> d
{'a': 8, 'b': 8}
>>> d['c'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8}
>>> d['z'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8, 'z': 8}
>>> d['w'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8, 'z': 8, 'w': 8}

また、同じキーに対して異なる値で同じことを試しました。しかし、順序は同じままでした。key : value ペアをもう 1 つ追加すると、別の結果が得られますが、これはわかりません。ここにあります :

>>> d[1] = 8
>>> d
{'a': 8, 1: 8, 'c': 8, 'b': 8, 'w': 8, 'z': 8}
4

4 に答える 4

1

要素は、キーのハッシュに基づいて保存されます。ドキュメントには、キーはハッシュ可能な型でなければならないと記載されています。

于 2013-05-25T18:23:27.047 に答える
1

辞書のキーはハッシュによって格納されるため、辞書には予測可能な順序がありません。順序が必要な場合は、listまたはを使用してくださいcollections.OrderedDict

于 2013-05-25T18:24:04.757 に答える
1

ハッシュテーブルです。キーはハッシュ値によって部分的に並べ替えられhash(key)ますが、実際のディクショナリの走査順序は、要素が挿入された順序、ディクショナリ内の要素の数、および場合によってはその他の要因によって異なります。それが特定のものであるとは決して考えるべきではありません。

于 2013-05-25T18:24:43.290 に答える