Beheben den Fehler Unhashable Type numpy.ndarray in Python

Vaibhav Vaibhav 14 April 2022
Beheben den Fehler Unhashable Type numpy.ndarray in Python

Das Python-Dictionary ist eine robuste und skalierbare Datenstruktur, die Daten in Form von Schlüssel-Wert-Paaren speichert. In Schlüssel-Wert-Paaren weist ein eindeutiger Schlüssel auf einen Wert hin, und es gibt keine Einschränkungen hinsichtlich des Werts. Ein Wert kann eine Ganzzahl, eine Fließkommazahl, ein boolescher Wert, eine Liste von Zahlen, ein Klassenobjekt, eine Liste von Klassenobjekten, ein Tupel, ein Dictionary und vieles mehr sein. Während es einige Einschränkungen gibt, was ein Schlüssel sein kann.

Die wesentliche Bedingung für einen Schlüssel ist, dass es sich um ein hashfähiges Objekt handelt. Ein hashfähiges Objekt bezieht sich auf ein Objekt, das einmal definiert wurde, während seiner Lebensdauer nicht weiter modifiziert werden kann oder unveränderlich ist und mit einem eindeutigen Hashwert dargestellt werden kann. Ein Hash-Wert ist ein eindeutiger ganzzahliger Wert.

Datentypen wie int, float, str, tuple und Klassenobjekte sind unveränderliche Objekte. Das bedeutet, dass sie sicher als Schlüssel in Wörterbüchern verwendet werden können. Probleme treten auf, wenn wir den Datentyp von Schlüsseln nicht genau kennen. Wenn wir beispielsweise versuchen, eine Liste oder ein numpy.ndarray als Schlüssel zu verwenden, werden wir auf TypeError: unhashable type: 'list' und TypeError: unhashable type: 'numpy.ndarray' stoßen. Fehler bzw.

In diesem Artikel erfahren wir, wie Sie diesen Fehler für NumPy-Arrays vermeiden können.

Beheben den Fehler unhashable type numpy.ndarray in Python

Wir müssen ein NumPy-Array in einen Datentyp konvertieren, der sicher als Schlüssel zur Behebung dieses Fehlers verwendet werden kann. Und im Fall von Arrays und Listen ist ein Tupel der richtige Weg. Siehe dazu den folgenden Python-Code.

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)

Ausgabe:

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

Die in Python eingebaute tuple()-Methode führt die notwendige Konvertierung für das iterierbare Objekt durch.

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.

Verwandter Artikel - Python Error