liste de types Python non illisibles

Les

Les dictionnaires Python n’acceptent que les types de données hachables comme clé dans un dictionnaire. Une liste n’est pas un type de données pouvant être haché. Si vous spécifiez une liste en tant que clé dans un dictionnaire, vous rencontrerez une erreur "TypeError : unhashable type : ‚Äòlist‚Äô‚" error.

Dans ce guide, nous expliquons ce que signifie cette erreur et pourquoi vous la voyez dans votre code. Nous allons parcourir un exemple de cette erreur pour vous montrer comment la résoudre.

TypeError : unhashable type : ‘list’

Les dictionnaires ont deux parties : les clés et les valeurs. Les clés sont les étiquettes associées à une valeur particulière. Pour accéder à une valeur, vous devez référencer le nom de clé de cette valeur.

Bien que les valeurs puissent être de n’importe quel type de données, à partir de listes à chaaînes, seuls les objets pouvant être hachés sont acceptables comme clés. Les objets pouvant être hachés sont des objets dont la valeur de hachage ne change pas au fil du temps. Des exemples d’objets pouvant être hachés sont les tuples et les chaaînes.

Les listes n’ont pas de valeur de hachage inchangée. Leurs valeurs de hachage peuvent changer avec le temps. Cela signifie que vous ne pouvez pas spécifier une liste comme clé de dictionnaire.

Un exemple de scénario

Créons un programme qui crée une liste d’étudiants qui ont une note moyenne de plus 75. Cette liste contiendra les enregistrements du dictionnaire de chaque élève et leurs notes. Pour créer ce dictionnaire, nous allons travailler à partir d’un dictionnaire avec une liste de tous les élèves d’une école et leurs notes.

Commençons par définir une liste d’élèves et un dictionnaire pour nos meilleurs étudiants :

Chaque valeur dans le "students‚" list est un dictionnaire. Chaque dictionnaire contient deux clés : nom et notes. Nous avons défini un dictionnaire appelé "top_students‚" qui contiendra les informations sur nos meilleurs étudiants.

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.

Maintenant que nous avons défini cela dictionnaire, nous utilisons une boucle for pour filtrer les étudiants dont les notes moyennes sont supérieures à 75 et les ajouter à notre nouveau dictionnaire :

√Ä chaque itération de la boucle for, nous calculons le moyenne de toutes les notes qu’un élève a obtenues. Pour ce faire, nous divisons le total de toutes les notes par le nombre de notes enregistrées.

Ensuite, nous vérifions si cette moyenne est supérieure à 75. Si c’est le cas, nous créons une nouvelle entrée dans le dictionnaire top_students avec le nom d’un étudiant et ses notes.

Enfin, nous imprimons le dictionnaire top_students sur la console afin de voir tous les étudiants qui ont une note moyenne supérieure à 75 :

Exécutez notre code et voyez ce arrive :

Notre code ne s’exécute pas correctement.

Le Solution

Notre code fonctionne jusqu’à ce que l’interpréteur atteigne la ligne 11. Sur cette ligne, notre code indique :

L’erreur dans notre code est due au fait que nous avons essayé d’attribuer une liste comme une clé dans un dictionnaire. Lorsque notre code analyse cette ligne lors de la première itération de notre boucle, notre code essaie de créer un dictionnaire avec la clé et la valeur suivantes :

Ceci est un dictionnaire invalide. Notre code essaie d’attribuer une liste comme clé qui ne fonctionne pas.

Pour résoudre ce problème, nous utilisons le nom de l’élève comme clé dans le dictionnaire au lieu de la liste des notes :

Nous avons attribué la liste des notes en tant que valeur plutôt qu’en tant que clé. Le nom de l’élève est la clé du dictionnaire. Exécutons notre code :

Notre code crée avec succès un dictionnaire contenant des informations sur les étudiants les plus performants. Tout étudiant dont la note moyenne à ses trois derniers tests est supérieure à 75 a été ajouté au dictionnaire.

Notre dictionnaire se décompose comme suit :

  • Clés : Linda, Holly
  • Valeurs : [84, 82, 65], [72, 74, 81]

Comme nous attribuons maintenant des chaaînes à nos noms de clé, notre code fonctionne.

Conclusion

L’erreur "TypeError: unhashable type: ‚Äòlist‚Äô" est générée lorsque vous essayez d’affecter une liste en tant que clé dans un dictionnaire. Pour résoudre cette erreur, assurez-vous de n’affecter qu’un objet hachable, tel qu’un chaaîne ou un tuple, comme clé pour un dictionnaire.

Vous êtes maintenant prêt à résoudre cette erreur comme un codeur 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