[Python-Dev] dict __contains__ raises TypeError on unhashable input

Ethan Furman ethan at stoneleaf.us
Sat Jul 20 01:47:36 CEST 2013


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.

--
~Ethan~


More information about the Python-Dev mailing list