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

Question:

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?

Asked By: Frias

||

Answers:

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.

Answered By: moinudin

What it seems like to me is that by calling the keys method you’re returning to python a dictionary object when it’s looking for a list or a tuple. So try taking all of the keys in the dictionary, putting them into a list and then using the for loop.

Answered By: dshipper
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.