Type incompétent «Dict»

Type incompétent «Dict»
Dans Python, un dictionnaire fait référence à une collection non ordonnée de paires de valeurs clés. Chaque clé est mappée à une valeur spécifique dans le dictionnaire. La clé d'un dictionnaire est unique et est utilisée pour accéder à la valeur correspondante.

Cependant, une clé d'un dictionnaire Python doit être hasardeuse. Un objet hashable signifie que l'objet est immuable et peut produire une valeur de hachage unique.

Par conséquent, l'utilisation d'un objet incompétent comme clé d'un dictionnaire entraînera une erreur.

Discutons de la façon dont nous pouvons résoudre cette erreur.

Exemple d'erreur

Considérez le code ci-dessous qui illustre comment ce type d'erreur se produit.

développeurs = "jeux": 200, "base de données": 100, "full_stack": 500
>>> employés = développeurs: 800
Traceback (dernier appel dernier):
Fichier "", ligne 1, dans
TypeError: Type incompétent: «Dict»

Dans l'exemple ci-dessus, nous commençons par définir un dictionnaire qui contient le type de développeur et le nombre total.

Nous créons un dictionnaire d'employés qui prend le dictionnaire du développeur comme la clé de la deuxième partie.

Étant donné qu'un dictionnaire est incompétent, Python ne peut pas l'utiliser comme clé d'un dictionnaire.

Python Vérifiez si l'objet est présentable

La question vient, comment puis-je savoir si un objet est hashable ou non? Dans Python, vous pouvez utiliser la fonction de hachage pour déterminer si un objet est présentable.

Un exemple est comme indiqué:

>>> Hash ("clé")
-4481039435095198476

Si un objet est présentable, il doit renvoyer un hachage unique comme indiqué dans l'exemple ci-dessus. Puisqu'une chaîne est hachable, elle renvoie un hachage unique.

Si vous essayez la même opération sur un dictionnaire ou une liste, vous obtiendrez une erreur comme indiqué:

>>> Hash ([1,2,3,4,5])
Traceback (dernier appel dernier):
Fichier "", ligne 1, dans
TypeError: Type incompétent: «Liste»

Il n'est pas hashable car une liste est mutable, comme le montre l'erreur ci-dessus.

Correction: TypeError: Type incompétent: «Dict»

Si vous souhaitez utiliser un dictionnaire comme clé pour un autre dictionnaire, vous pouvez le faire en le convertissant d'abord en tuple.

Un tuple est présentable comme indiqué dans l'exemple ci-dessous:

>>> Hash ((1,2,3,4,5))
-5659871693760987716

Résolvons notre première erreur en convertissant le dictionnaire du développeur en tuple:

>>> développeurs = Tuple (développeurs)
>>> imprimer (développeurs)
(«Jeux», «base de données», «full_stack»)

Une fois que nous l'avons converti en tuple, nous pouvons l'utiliser comme clé du dictionnaire comme indiqué:

>>> employés = développeurs: 800
>>> imprimer (employés)
('jeux', 'database', 'full_stack'): 800

Correction 2

Une autre solution consiste à utiliser le dictionnaire comme valeur. Par exemple, nous pouvons utiliser le dictionnaire du développeur comme valeur pour le dictionnaire des employés.

Prenez l'illustration du code ci-dessous:

>>> développeurs = "jeux": 200, "base de données": 100, "full_stack": 500
>>> employés = "employés": développeurs
>>> imprimer (employés)
'employés': 'jeux': 200, 'database': 100, 'full_stack': 500

Dans ce cas, le code ne renvoie pas d'erreur car nous utilisons le dictionnaire comme valeur pour un nouveau dictionnaire.

Utilisation d'une boucle pour

Une autre méthode non conventionnelle consiste à utiliser une boucle pour. Vous pouvez itérer sur chaque clé et évaluer la paire d'un dictionnaire et les ajouter à un nouveau dictionnaire.

Considérez l'exemple ci-dessous:

>>> développeurs = "jeux": 200, "base de données": 100, "full_stack": 500
>>> pour K, V dans les développeurs.articles():
… Employés [K] = V

>>> Employés
'employés': 'jeux': 200, 'database': 100, 'full_stack': 500, 'jeux': 200, 'database': 100, 'full_stack': 500

Dans ce cas, nous utilisons une boucle pour itérater les articles du dictionnaire des développeurs et les ajoutons au dict des employés.

Fermeture

Cet article a exploré trois méthodes de fixation de l'erreur «TypeError: Undelable Type:« Dict »» dans Python.