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.
Article connexe - Python Error
- Correction de TabError en Python
- Correction de l'erreur Python Return Outside Function
- Correction de l'erreur String Must Be Indices en Python
- Correction de l'erreur syntaxerror: unexpected character after line continuation character en Python
- Correction de l'erreur TypeError: iteration over a 0-d array dans Python NumPy
- Correction de l'erreur TypeError: must be str, not int en Python