ホームページ > バックエンド開発 > Python チュートリアル > Python 3.6 辞書は順序付けされていますか? これはパフォーマンスにどのような影響を与えますか?

Python 3.6 辞書は順序付けされていますか? これはパフォーマンスにどのような影響を与えますか?

Patricia Arquette
リリース: 2024-12-21 17:19:10
オリジナル
990 人が閲覧しました

Are Python 3.6  Dictionaries Ordered, and How Does This Impact Performance?

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

Python バージョン 3.6 以降では、辞書は要素の挿入順序を維持します。この動作は「挿入順序」として知られています。高度な順序関連機能を提供する OrderedDict とは異なり、辞書は要素の挿入順序のみを保持します。

Python 3.6 が順序を維持しながら辞書のパフォーマンスを強化する方法

Python 3.6辞書の実装では、挿入を維持しながらメモリ効率に対処するためにデュアル配列アプローチを採用しています。 order.

  • dk_entries array: 辞書エントリを挿入された順序で格納します。
  • dk_indices array: を指すインデックスが含まれます。 dk_entries へarray.

このアプローチでは、以前の実装の場合のように、まばらに配置された配列の必要性が回避されます。代わりに、必要なエントリとそのインデックスのみを保存するため、メモリ使用量がよりコンパクトになります。

視覚的表現:

次の辞書を考えてみましょう:

d = {'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 辞書は順序付けされていますか? これはパフォーマンスにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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