5
为什么Python字典可以具有相同散列的多个键?
我想了解幕后的Pythonhash函数。我创建了一个自定义类,其中所有实例都返回相同的哈希值。 class C: def __hash__(self): return 42 我只是假设上述类的一个实例随时都可以位于中dict,但是实际上adict可以具有相同散列的多个元素。 c, d = C(), C() x = {c: 'c', d: 'd'} print(x) # {<__main__.C object at 0x7f0824087b80>: 'c', <__main__.C object at 0x7f0823ae2d60>: 'd'} # note that the dict has 2 elements 我进行了更多的实验,发现如果我重写该__eq__方法以使该类的所有实例都相等,则dict仅允许一个实例。 class D: def __hash__(self): return 42 def __eq__(self, other): return …