Python で「凍結された辞書」は可能ですか?
「凍結された辞書」の概念は、Python 内で議論の話題になっています。 Python コミュニティ。 Python には組み込みの frozendict が提供されていませんが、不変でハッシュ可能な辞書の必要性に対処するためのソリューションがいくつか登場しています。
凍結された dict が必要な一般的な理由の 1 つは、不明な引数を使用した関数呼び出しをメモ化することです。一般的なアプローチには、ハッシュ テーブル ルックアップのソートの安定性に依存して、tuple(sorted(kwargs.items())) を使用して引数をタプルに変換することが含まれます。
より包括的なアプローチについては、次の FrozenDict クラスを検討してください。
import collections
class FrozenDict(collections.Mapping):
...
このクラスは、反復、長さの決定、項目の取得、ハッシュ計算のメソッドを提供し、標準の辞書のように動作し、ハッシュをサポートします。
実際には、FrozenDict は効率的に動作します。 :
x = FrozenDict(a=1, b=2)
y = FrozenDict(a=1, b=2)
print(x is y, x == y, x == {'a': 1, 'b': 2})
d = {x: 'foo'}
print(d[y]) # 'foo'
カスタム実装を提供することにより、FrozenDict は Python で不変でハッシュ可能な辞書を可能にし、オブジェクト処理とメモリ最適化の可能性を拡張します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3