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中文网其他相关文章!