TypeError: unhashable type: ‘dict’, wanneer dict wordt gebruikt als sleutel voor een ander dict

Ik heb dit stukje code:

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

Als ik die code uitvoer, krijg ik deze foutmelding:

TypeError: unhashable type: ‘dict’

Wat is de oorzaak van die fout en wat kan ik doen om deze op te lossen?


Antwoord 1, autoriteit 100%

Uit de fout leid ik af dat referenceElementeen woordenboek is (zie repro hieronder). Een woordenboek kan niet worden gehasht en kan daarom niet worden gebruikt als sleutel tot een ander woordenboek (of zichzelf trouwens!).

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

U bedoelde waarschijnlijk ofwel for element in referenceElement.keys()of for element in json['referenceElement'].keys(). Met meer context over welke typen jsonen referenceElementzijn en wat ze bevatten, kunnen we je beter helpen als geen van beide oplossingen werkt.


Antwoord 2

Wat mij lijkt, is dat door de methode keys aan te roepen, je een woordenboekobject in Python teruggeeft wanneer het op zoek is naar een lijst of een tuple. Dus probeer alle sleutels in het woordenboek te nemen, ze in een lijst te plaatsen en dan de for-lus te gebruiken.

Other episodes