TypeError: unhashable type: "dict", quand il dict utilisé comme une clé pour une autre dict [dupliquer]

cette question a déjà une réponse ici:

  • TypeError: unhashable type: 'dict' 1 réponse

j'ai ce morceau de code:

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

quand j'exécute ce code, j'obtiens cette erreur:

TypeError: unhashable type: 'dict'

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

53
demandé sur I159 2010-12-26 01:33:42

2 réponses

de l'erreur, j'en déduis que referenceElement est un dictionnaire (voir repro ci-dessous). Un dictionnaire ne peut pas être hachée et ne peut donc pas être utilisé comme une clé à un autre dictionnaire (ou lui-même pour cette matière!).

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

vous vouliez probablement dire for element in referenceElement.keys() ou for element in json['referenceElement'].keys() . Avec plus de contexte sur les types json et referenceElement sont et ce qu'ils contiennent, nous serons en mesure de mieux vous aider si aucune des solutions ne fonctionne.

68
répondu marcog 2010-12-25 22:37:28

ce qu'il me semble, c'est qu'en appelant la méthode keys vous retournez à python un objet dictionaire quand il cherche une liste ou un tuple. Essayez donc de prendre toutes les clés du dictionnaire, de les mettre dans une liste et ensuite d'utiliser la boucle for.

2
répondu dshipper 2010-12-25 22:39:08