Python 中的不可變、可雜湊字典
凍結集合和元組為Python 中的列表提供了不可變、可可知哈希對應項。然而,字典缺乏類似的概念。 「frozendict」將提供字典的不可變且可散列的表示。
實作與使用
雖然Python本身不提供凍結字典類型,但它是可能的使用包裝類別建立自訂實作:
<code class="python">class FrozenDict(collections.Mapping): # ... (code as provided in the reference answer)</code>
行為和比較
FrozenDict 實例的行為與常規詞典類似,支援迭代、專案存取和成員資格測試。然而,它們是不可變的,這意味著一旦創建,就無法修改。
儘管FrozenDict 實例具有不可變性,但可以根據其可散列性質比較是否相等:
>>> x = FrozenDict(a=1, b=2) >>> y = FrozenDict(a=1, b=2) >>> x is y False >>> x == y True
實用程式
實用程式
>>> cache = {} >>> def memoized_function(args): >>> key = FrozenDict(args) >>> if key in cache: >>> return cache[key] >>> else: >>> result = ... # Computation here >>> cache[key] = result >>> return result
PEP 603值得注意的是PEP 603在Python 中提出了一個原生的freezedict 類型,但由於擔心其潛在用途而被撤回。儘管如此,像 FrozenDict 這樣的自訂實作為需要不可變、可雜湊字典的情況提供了實用的解決方案。
以上是如何在 Python 中實作不可變、可雜湊的字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!