On Fri, Dec 30, 2016 at 8:04 PM, Ethan Furman <[email protected]> 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
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/