3.6 より前の Python バージョンでは、辞書内のキーの順序は保証されていませんでした。これにより、辞書を反復処理したり、そのキーにアクセスしたりするときに、予期しない結果が生じる可能性があります。
問題を理解するには、次のコードを考慮してください。
d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print(l)
この例では、keys() メソッド辞書内のキーのリストを返します。ただし、リスト内のキーの順序は保証されません。 Python バージョン 2.7 以前では、キーは挿入順に返されました。ただし、Python 3.0 以降では、キーは任意の順序で返されました。
辞書内のキーの順序に依存している場合、この不一致が問題になる可能性があります。たとえば、辞書を使用して食料品リストに品目を保存する場合、キーが辞書に追加した順序で返されることが期待される場合があります。ただし、Python バージョン 3.0 以降では、これは保証されていません。
この問題を解決するには、2 つの選択肢があります。最初の 1 つは collections.OrderedDict クラスを使用することです。このクラスは、順序の入力に対する保護を提供します。代番号展示了 OrderedDict の使用方法:
from collections import OrderedDict d = OrderedDict([('a', 0), ('b', 1), ('c', 2)]) l = list(d.keys()) print(l) # ['a', 'b', 'c']
另一选择は、sorted() 関数を使用してキーを昇順に並べ替えます。ただし、これには追加の手順が必要であり、必ずしも望ましい動作であるとは限りません。
Python バージョン 3.6 以降では、デフォルトで辞書は挿入順序を維持します。ただし、Python のさまざまな実装間で保証された挿入順序が必要な場合は、OrderedDict を使用することをお勧めします。
以上がPython の古いバージョンの辞書キーが必ずしも順序付けされていないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。