【发布时间】:2013-06-20 15:05:53
【问题描述】:
考虑:
>>> a = {'foo': {'bar': 3}}
>>> b = {'foo': {'bar': 3}}
>>> a == b
True
根据 python 文档,you can indeed use 是字典上的 == 运算符。
这里实际发生了什么? Python 是否递归检查字典的每个元素以确保相等?是否确保键相同匹配,值也相同匹配?
是否有文档准确说明字典中的== 的含义?或者我是否必须实现我自己的平等检查版本?
(如果== 运算符有效,为什么dicts 不能散列?也就是说,为什么我不能创建一个set() 的dicts,或者使用一个dict 作为字典键?)
【问题讨论】:
-
dicts 不可散列,因为它们是可变的并且它们的数据对过去的状态很敏感。由于字典的历史(包含更多虚拟条目),很容易拥有两个状态相同但哈希不相等的字典
-
@SlaterTyranus:您可以轻松忽略虚拟条目;这不是问题。可变性是一个大问题。
标签: python dictionary