dict de type Python

Le langage Python est spécifique à ce qui peut être utilisé comme clé dans un dictionnaire. Dans un dictionnaire Python, toutes les clés doivent être hachables.

Si vous essayez d’utiliser un type de clé non hachable lors de l’ajout d’une clé à un dictionnaire, vous rencontrerez le "TypeError : unhashable type : ‚Äòdict‚Äô" error.

Dans ce guide, nous expliquons ce que signifie cette erreur et pourquoi elle est générée. Nous passons en revue un exemple de cette erreur afin que vous puissiez apprendre à la résoudre dans votre code.

TypeError : unhashable type : ‘dict’

Les dictionnaires se composent de deux parties : keys et valeurs. Les clés sont les identifiants liés à une valeur. Lorsque vous référencez une clé, vous pourrez récupérer la valeur associée à cette clé.

Seuls les objets pouvant être hachés peuvent être des clés dans un dictionnaire. Objets immuables tels que chaaînes, entiers, tuples et les ensembles gelés sont hachables, à quelques exceptions près. Les dictionnaires ne peuvent donc pas être utilisés comme clé dans un dictionnaire.

Pour ajouter un élément à un dictionnaire, vous devez spécifier une clé de hachage valide. Par exemple, "nom" est une clé valide, mais { "name‚": "test‚" } ne l’est pas.

Un exemple de scénario

Ici, nous écrivons un programme qui ajoute tous les g√¢teaux qui ont été vendus plus de cinq fois dans une boulangerie d’un dictionnaire à un autre dictionnaire.

Commencez par déclarer une liste de g√¢teaux qui contient des dictionnaires sur chaque g√¢teau. Nous définissons également un dictionnaire dans lequel nous pouvons stocker les g√¢teaux qui ont été vendus plus de cinq fois.

81% des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi dans la technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Nos "g√¢teaux‚" list contient trois dictionnaires. Chaque dictionnaire contient deux clés et valeurs. Les noms clés sont "g√¢teau" et "vendu".

Maintenant, nous écrivons une for loop qui parcourt notre liste de g√¢teaux et trouve ceux qui ont été vendus plus de cinq fois. Ces g√¢teaux seront ajoutés au dictionnaire "sold_more_than_five‚" :

Dans notre boucle for, nous comparons si la valeur de "sold" dans chaque dictionnaire est supérieure à 5. Si c’est le cas, cet élément est ajouté à notre dictionnaire "sold_more_than_five". un message est imprimé sur la console informant l’utilisateur que le g√¢teau en question a été vendu plus de cinq fois.

Une fois notre boucle terminée, nous imprimons t il a "vendu_plus_que_cinq" dictionnaire à la console.

Exécutez notre code pour vous assurer que notre programme fonctionne :

Notre code renvoie une erreur.

La solution

Notre code ne fonctionne pas car nous essayons de créer une clé de dictionnaire en utilisant un autre dictionnaire.

La valeur de "c‚" est égal à un dictionnaire de nos "g√¢teaux" liste. Cela signifie que lorsque nous essayons d’ajouter un article au "sold_more_than_five‚" dictionnaire, nous essayons accidentellement d’ajouter un dictionnaire en tant que clé :

Quand notre "if‚" est exécutée sur le "Carrot Cake" cake, notre code essaie de s’exécuter :

Ceci n’est pas valide car nous essayons d’ajouter un dictionnaire en tant que clé dans un dictionnaire. Nous pouvons résoudre ce problème en utilisant c["name‚"] comme nom de notre clé de dictionnaire :

Exécutez notre code avec ce code révisé :

Notre code s’exécute avec succès. Nous utilisons désormais le nom de chaque g√¢teau comme clé plutôt que comme dictionnaire.

Conclusion

L’erreur "TypeError: unhashable type: ‚Äòdict‚Äô" est levée lorsque vous essayez de créer un élément dans un dictionnaire dont la clé est un unhashable objet. Seuls les objets immuables tels que les chaaînes, les tuples et les entiers peuvent être utilisés comme clé dans un dictionnaire.

Pour résoudre cette erreur, assurez-vous que vous n’utilisez que des objets hachables lors de la création d’un élément dans un dictionnaire. Vous êtes maintenant prêt à résoudre cette erreur Python courante comme un développeur professionnel !

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method