web-dev-qa-db-fra.com

TypeError: unhashable type: 'dict', lorsque dict est utilisé comme clé pour un autre dict

J'ai ce morceau de code:

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

Lorsque je lance ce code, j'obtiens cette erreur:

TypeError: type inshashable: 'dict'

Quelle est la cause de cette erreur et que puis-je faire pour la réparer?

63
Frias

De l'erreur, je déduis que referenceElement est un dictionnaire (voir repro ci-dessous). Un dictionnaire ne peut pas être haché et ne peut donc pas être utilisé comme clé pour un autre dictionnaire (ou lui-même d'ailleurs!).

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

Vous vouliez probablement dire soit for element in referenceElement.keys() ou for element in json['referenceElement'].keys(). Avec plus de contexte sur les types json et referenceElement ainsi que sur leur contenu, nous pourrons mieux vous aider si aucune des solutions ne fonctionne.

76
marcog

Ce qui me semble, c’est que lorsque vous appelez la méthode des clés, vous retournez à python) un objet dictionnaire lorsqu'il cherche une liste ou un tuple. Essayez donc de prendre toutes les clés du dictionnaire, en les mettant dans une liste puis en utilisant la boucle for.

1
dshipper