Correction de l'erreur Unhashable Type numpy.ndarray en Python

Vaibhav Vaibhav 14 avril 2022
Correction de l'erreur Unhashable Type numpy.ndarray en Python

Le dictionnaire Python est une structure de données robuste et évolutive qui stocke les données sous la forme de paires clé-valeur. Dans les paires clé-valeur, une clé unique pointe vers une certaine valeur, et il n’y a aucune limitation quant à la valeur. Une valeur peut être un entier, un nombre à virgule flottante, un booléen, une liste de nombres, un objet de classe, une liste d’objets de classe, un tuple, un dictionnaire et bien d’autres. Alors qu’il existe certaines limites à ce que peut être une clé.

La condition essentielle pour une clé est qu’elle doit être un objet hachable. Un objet hachable fait référence à un objet qui, une fois défini, ne peut plus être modifié pendant sa durée de vie ou immuable et peut être représenté avec une valeur de hachage unique. Une valeur de hachage est une valeur entière unique.

Les types de données tels que int, float, str, tuple et les objets de classe sont des objets immuables. Cela signifie qu’ils peuvent être utilisés en toute sécurité comme clés dans les dictionnaires. Des problèmes surviennent lorsque nous ne sommes pas particuliers au type de données des clés. Par exemple, si nous essayons d’utiliser une list ou un numpy.ndarray comme clé, nous tomberons sur TypeError: unhashable type: 'list' et TypeError: unhashable type: 'numpy.ndarray' erreurs respectivement.

Dans cet article, nous apprendrons comment éviter cette erreur pour les tableaux NumPy.

Correction de l’erreur unhashable type numpy.ndarray en Python

Nous devons convertir un tableau NumPy en un type de données pouvant être utilisé en toute sécurité comme clé pour corriger cette erreur. Et, dans le cas des tableaux et des listes, un tuple est la voie à suivre. Reportez-vous au code Python suivant pour la même chose.

import numpy as np

dictionary = {}
n = np.array([1.234, 21.33, 3.413, 4.4, 15.0000])
n = tuple(n)  # Conversion
dictionary[n] = "Hello World"
print(dictionary)

Production :

{(1.234, 21.33, 3.413, 4.4, 15.0): 'Hello World'}

La méthode tuple() intégrée de Python effectuera la conversion nécessaire pour l’objet itérable.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Error