Python TypeError: Nicht hashbarer Typ: Liste

Zeeshan Afridi 21 Juni 2023
  1. der TypeError: unhashable type: 'list' in Python
  2. Hash-Funktion in Python
  3. Korrigieren Sie den TypeError: unhashable type: 'list' in Python
Python TypeError: Nicht hashbarer Typ: Liste

Dieser Artikel behandelt den TypeError: unhashable type: 'list' und wie man ihn in Python behebt.

der TypeError: unhashable type: 'list' in Python

Dieser Fehler tritt auf, wenn Sie nicht hashfähige Objekte wie eine Liste als Schlüssel an das Python-Wörterbuch übergeben oder den Hashwert einer Funktion finden.

Wörterbücher sind eine Datenstruktur in Python, die in Schlüssel-Wert-Paaren arbeitet, jeder Schlüssel hat einen Wert und um auf die Werte von Werten zuzugreifen, benötigen Sie die Schlüssel wie Array-Indizes.

Syntax eines Wörterbuchs:

dic = {"key": "Values"}

Hashfähige Objekte sind solche, deren Wert sich im Laufe der Zeit nicht ändert, aber gleich bleiben. Tupel und strings sind Arten von hashfähigen Objekten.

Code:

# creating a dictionary
dic = {
    # list as a key --> Error because lists are immutable
    ["a", "b"]: [1, 2]
}

print(dic)

Ausgang:

TypeError: unhashable type: 'list'

Wir haben eine Liste ["a","b"] als Schlüssel verwendet, aber der Compiler hat einen TypeError: unhashable type: 'list' geworfen.

Lassen Sie uns den Hash-Wert der Liste manuell finden.

Code:

lst = ["a", "b"]

hash_value = hash(lst)

print(hash_value)

Ausgang:

TypeError: unhashable type: 'list'

Die Funktion hash() wird verwendet, um den Hashwert eines bestimmten Objekts zu finden, aber das Objekt muss unveränderlich sein wie string, tuple usw.

Hash-Funktion in Python

Die Funktion hash() ist eine Verschlüsselungstechnik, die das unveränderliche Objekt verschlüsselt und ihm einen eindeutigen Wert zuweist, der als Hash-Wert des Objekts bekannt ist. Unabhängig von der Größe der Daten bieten sie dieselbe Größe an eindeutigem Wert.

Code:

string_val = "String Value"
tuple_val = (1, 2, 3, 4, 5)
msg = """Hey there!
              Welcome to DelfStack"""

print("Hash of a string object\t\t", hash(string_val))
print("Hash of a tuple object\t\t", hash(tuple_val))
print("Hash of a string message\t", hash(tuple_val))

Ausgang:

Hash of a string object      -74188595
Hash of a tuple object       -1883319094
Hash of a string message     -1883319094

Die Hash-Werte sind gleich groß und für jeden Wert eindeutig.

Korrigieren Sie den TypeError: unhashable type: 'list' in Python

Um den TypeError in Python zu beheben, müssen Sie unveränderliche Objekte als Schlüssel von Wörterbüchern und als Argumente für die Funktion hash() verwenden. Beachten Sie im obigen Code, dass die Funktion hash() perfekt mit veränderlichen Objekten wie tuple und string funktioniert.

Mal sehen, wie wir den TypeError: unhashable type: 'list' in Wörterbüchern beheben können.

Code:

# creating a dictionary
dic = {
    # string as key
    "a": [1, 2]
}

print(dic)

Ausgang:

{'a': [1, 2]}

Dieses Mal geben wir als Schlüssel einen String "a" an, mit dem man gut arbeiten kann, weil strings veränderbar sind.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error

Verwandter Artikel - Python TypeError