Maison > développement back-end > Tutoriel Python > Pourquoi est-ce que je reçois une erreur \'TypeError: unhashable type: \'dict\'\' en Python et comment puis-je la corriger ?

Pourquoi est-ce que je reçois une erreur \'TypeError: unhashable type: \'dict\'\' en Python et comment puis-je la corriger ?

Linda Hamilton
Libérer: 2024-10-28 05:41:01
original
341 Les gens l'ont consulté

Why am I getting a

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>
Copier après la connexion

Vous pouvez désormais utiliser key comme clé dans un dictionnaire ou définir :

<code class="python">some_dict[key] = True</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal