ホームページ >バックエンド開発 >Python チュートリアル >Python 辞書は 3.6 で挿入順序を維持することが保証されていますか?

Python 辞書は 3.6 で挿入順序を維持することが保証されていますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 19:37:141033ブラウズ

Are Python Dictionaries Guaranteed to Maintain Insertion Order in 3.6 ?

Python 3.6 では辞書は順序付けされていますか?

Python 3.6 では、CPython 実装の辞書は挿入順序になっており、順序が保持されます。挿入されたアイテムの数。ただし、この動作は実装の詳細とみなされ、依存すべきではありません。

Python 3.7 での保証された挿入順序

Python 3.7 では、辞書の挿入順序は保証された言語機能。これは、準拠するすべての Python 実装が挿入順辞書を提供する必要があることを意味します。

挿入順によるパフォーマンスの向上

Python 3.6 の新しい辞書実装は、2 つの要素を維持することで挿入順を実現します。 arrays:

  • dk_entries: キーと値のエントリを
  • dk_indices: インデックスを dk_entries に保存し、ハッシュ テーブルとして機能します。

この設計では、必要なエントリのみを保存し、インデックスの疎な配列を使用することでメモリのオーバーヘッドを削減します。 。以前の実装では、キーと値のエントリの疎な配列が割り当てられていたため、空のスペースが生じていました。

データ構造の視覚化

たとえば、辞書 { 'timmy': ' red', 'barry': 'green', 'guido': 'blue' } が格納されます例:

indices = [None, 1, None, None, None, 0, None, 2]
entries = [[-9092791511155847987, 'timmy', 'red'],
           [-8522787127447073495, 'barry', 'green'],
           [-6480567542315338377, 'guido', 'blue']]

古い設計では、衝突を最小限に抑えるために多数の空きスペースがありました。新しいアプローチでは、スパース性をインデックス配列に移動することでメモリ使用量が削減されます。

結論として、Python 3.6 辞書の挿入順序はメモリ効率を向上させ、Python 実装全体で辞書の信頼性を高める大幅な改善です。

以上がPython 辞書は 3.6 で挿入順序を維持することが保証されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。