对于 Python dict
的 View 对象,比我预期的比较方式不同:
a = {0 : 'a', 1 : 'b'}
b = {1 : 'b', 0 : 'a'}
print(a == b) # True
print(a.keys() == b.keys()) # True
print(a.values() == b.values()) # False
print(a.items() == b.items()) # True
dict.values()
返回的结果不是列表,而是一个“视图”对象。这意味着该对象在被调用时会动态更新,以反映底层字典中键值的更改。因此,在同一字典上多次调用 dict.values()
会返回具有相同内容的不同视图对象,它们之间的比较结果为 False。
实际上,在相同的字典(甚至不是副本)的情况下,也是如此。
a = {0 : 'a', 1 : 'b'}
print(a.values() == a.values()) # False
这个视图对象的相等性意味着什么?