On 20 Jul, 2013, at 1:47, Ethan Furman <et...@stoneleaf.us> wrote: > While working on issue #18508 I stumbled across this: > > Traceback (most recent call last): > ... > File "/usr/local/lib/python3.4/enum.py", line 417, in __new__ > if value in cls._value2member_map: > TypeError: unhashable type: 'list' > > I'll wrap it in a try-except block, but I must admit I was surprised the > answer wasn't False. After all, if the input is unhashable then obviously > it's not in the dict; furthermore, if I were to compare the number 5 with a > set() I would get False, not a TypeMismatch error, and dict keys are > basically done by equality, the hash is just (?) a speed-up.
Not quite, there are some objects that compare equal without both of them being hashable: >>> frozenset([1,2]) == set([1,2]) True >>> dct = { frozenset([1,2]): 1 } >>> frozenset([1,2]) in dct True >>> set([1,2]) in dct Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' It would be strange if the last test would return False instead of raising an error. Ronald > > -- > ~Ethan~ > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/ronaldoussoren%40mac.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com