TypeError: unhashable type: 'dict', when dict used as a key for another dict

Frias picture Frias · Dec 25, 2010 · Viewed 163.3k times · Source

I have this piece of code:

for element in json[referenceElement].keys():

When I run that code, I get this error:

TypeError: unhashable type: 'dict'

What is the cause of that error and what can I do to fix it?

Answer

moinudin picture moinudin · Dec 25, 2010

From the error, I infer that referenceElement is a dictionary (see repro below). A dictionary cannot be hashed and therefore cannot be used as a key to another dictionary (or itself for that matter!).

>>> d1, d2 = {}, {}
>>> d1[d2] = 1
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unhashable type: 'dict'

You probably meant either for element in referenceElement.keys() or for element in json['referenceElement'].keys(). With more context on what types json and referenceElement are and what they contain, we will be able to better help you if neither solution works.