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

Reply via email to