5
Python dictが同じハッシュを持つ複数のキーを持つことができるのはなぜですか?
私は内部でPythonhash関数を理解しようとしています。すべてのインスタンスが同じハッシュ値を返すカスタムクラスを作成しました。 class C: def __hash__(self): return 42 上記のクラスのインスタンスは一度に1つしか存在できないと仮定しました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__、クラスのすべてのインスタンスが等しく比較されるようにメソッドをオーバーライドすると、dict1つのインスタンスしか許可されないことがわかりました。 class D: def __hash__(self): return 42 def __eq__(self, other): return …