On Fri, Dec 30, 2016 at 8:04 PM, Ethan Furman <et...@stoneleaf.us> wrote:
> No. It is possible to have two keys be equal but different -- an easy > example is 1 and 1.0; they both hash the same, equal the same, but are not > identical. dict has to check equality when two different objects hash the > same but have non-matching identities. > Python 3.6.0 (default, Dec 24 2016, 00:01:50) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> d = {1: 'int', 1.0: 'float'} >>> d {1: 'float'} IPython 5.1.0 -- An enhanced Interactive Python. In [1]: class Foo: ...: def __eq__(self, other): ...: return True ...: def __init__(self, val): ...: self.val = val ...: def __repr__(self): ...: return '<Foo %r>' % self.val ...: def __hash__(self): ...: return 42 ...: In [2]: f1 = Foo(1) In [3]: f2 = Foo(2) In [4]: x = {f1: 1, f2: 2} In [5]: x Out[5]: {<Foo 1>: 2} I'm having trouble showing that two equal but nonidentical objects can both be in the same dict.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/