Python 中可能存在“冻结字典”吗?
“冻结字典”的概念一直是业界讨论的话题Python 社区。虽然 Python 不提供内置的 freezedict,但已经出现了几种解决方案来满足对不可变、可散列字典的需求。
需要冻结字典的一个常见原因是记住带有未知参数的函数调用。典型的方法包括使用 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