TypeError : type non hachable : 'dict'
Cette erreur se produit lorsque vous essayez d'utiliser un dictionnaire comme clé dans un dictionnaire ou dans un ensemble. Pythons est constitué d'objets immuables (tels que des chaînes, des entiers, des flotteurs, des ensembles gelés et des tuples d'immuables) qui peuvent être hachés et peuvent servir de clés. Cependant, les dictionnaires sont mutables et donc non hachables.
Pour utiliser un dictionnaire comme clé, vous devez le convertir dans un format hachable. Si le dictionnaire ne contient que des valeurs immuables, vous pouvez en créer une représentation hachable à l'aide de Frozenset() :
<code class="python">dict_key = {"a": "b"} key = frozenset(dict_key.items())</code>
Vous pouvez désormais utiliser key comme clé dans un dictionnaire ou définir :
<code class="python">some_dict[key] = True</code>
Si le dictionnaire contient des valeurs qui sont elles-mêmes des dictionnaires ou des listes, vous devez les convertir de manière récursive en formats hachables. Voici une fonction utilitaire qui peut vous aider :
<code class="python">def freeze(d): if isinstance(d, dict): return frozenset((key, freeze(value)) for key, value in d.items()) elif isinstance(d, list): return tuple(freeze(value) for value in d) return d</code>
En utilisant cette fonction, vous pouvez geler le dictionnaire puis l'utiliser comme clé :
<code class="python">key = freeze(dict_key) some_dict[key] = True</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!