Python は、凍結セットやタプルなどの不変のコレクションを提供します。 「凍結辞書」として知られる辞書に同様の概念は存在するでしょうか?
このようなデータ構造を作成する主な動機は、動的な引数を持つ関数をメモ化するための有用性にあります。通常、辞書と同等のハッシュ可能なものは、入力辞書のキーと値のペアを含むソートされたタプルとして保存されます。ただし、Python は特定の並べ替え順序を保証しないため、不一致が生じる可能性があります。
カスタム ラッパーを実装して、Python のマッピング プロトコルに準拠し、凍結された辞書の動作を模倣することができます。以下に例を示します。
<code class="python">import collections class FrozenDict(collections.Mapping): def __init__(self, *args, **kwargs): self._d = dict(*args, **kwargs) self._hash = None # Implement methods inherited from collections.Mapping # ... def __hash__(self): # Calculate the hash on demand to optimize performance if self._hash is None: h = 0 for pair in self.items(): h ^= hash(pair) self._hash = h return self._hash</code>
このカスタム データ構造は標準辞書と同様に動作し、キー、値、および反復へのアクセスを許可します。また、メンバーシップと同等性のチェックもサポートしており、他の辞書のキーとして適切に機能します。
以上が提供された記事に基づいた質問形式のタイトルをいくつか示します。 直接的かつ集中的: * Python の凍結辞書: 実現可能なコンセプト? * Python 辞書は本当に不変でしょうか? * \&qu はありますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。