Python の古いバージョンの辞書キーが必ずしも順序付けされていないのはなぜですか?

Susan Sarandon
リリース: 2024-11-19 04:23:02
オリジナル
268 人が閲覧しました

Why Are Dictionary Keys in Older Python Versions Not Always Ordered?

古いバージョンの Python での辞書内のキーの順序

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート