Ein Schlüssel eines Python -Wörterbuchs muss jedoch hashabel sein. Ein Hash -Objekt bedeutet, dass das Objekt unveränderlich ist und einen einzigartigen Hash -Wert erzeugen kann.
Daher führt die Verwendung eines unveränderlichen Objekts als Schlüssel eines Wörterbuchs zu einem Fehler.
Lassen Sie uns diskutieren, wie wir diesen Fehler beheben können.
Beispielfehler
Betrachten Sie den folgenden Code, der zeigt, wie dieser Fehlertyp auftritt.
Entwickler = "Spiele": 200, "Datenbank": 100, "full_stack": 500Im obigen Beispiel beginnen wir zunächst ein Wörterbuch, das den Entwicklertyp und die Gesamtzahl enthält.
Wir erstellen ein Mitarbeiterwörterbuch, das das Wörterbuch des Entwicklers als Schlüssel im zweiten Teil nimmt.
Da ein Wörterbuch unsicher ist, kann Python es nicht als Schlüssel eines Wörterbuchs verwenden.
Python überprüfen, ob Objekt hashabel ist
Die Frage kommt, woher weiß ich, ob ein Objekt hashabel ist oder nicht? In Python können Sie die Hash -Funktion verwenden, um festzustellen, ob ein Objekt Hashable ist.
Ein Beispiel ist wie gezeigt:
>>> Hash ("Schlüssel")Wenn ein Objekt hashable ist, sollte es einen einzigartigen Hash zurückgeben, wie im obigen Beispiel gezeigt. Da eine Saite Hashable ist, gibt sie einen einzigartigen Hash zurück.
Wenn Sie dieselbe Operation in einem Wörterbuch oder einer Liste versuchen, erhalten Sie wie gezeigt einen Fehler:
>>> Hash ([1,2,3,4,5])Es ist nicht hashierbar, da eine Liste veränderlich ist, wie im obigen Fehler gezeigt.
Fix: TypeError: Nicht abgehackbarer Typ: 'Diktat'
Wenn Sie ein Wörterbuch als Schlüssel für ein anderes Wörterbuch verwenden möchten, können Sie dies tun, indem Sie es zuerst in ein Tupel umwandeln.
Ein Tupel ist Hashable, wie im folgenden Beispiel gezeigt:
>>> Hash ((1,2,3,4,5))Lassen Sie uns unseren ersten Fehler lösen, indem wir das Wörterbuch des Entwicklers in ein Tupel umwandeln:
>>> Entwickler = Tuple (Entwickler)Sobald wir es in ein Tupel umwandeln, können wir es als Schlüssel im Wörterbuch wie gezeigt verwenden:
>>> Mitarbeiter = Entwickler: 800Fix 2
Eine andere Lösung ist die Verwendung des Wörterbuchs als Wert. Zum Beispiel können wir das Wörterbuch des Entwicklers als Wert für das Wörterbuch der Mitarbeiter nutzen.
Nehmen Sie die Code -Illustration unten:
>>> Entwickler = "Spiele": 200, "Datenbank": 100, "full_stack": 500In diesem Fall gibt der Code keinen Fehler zurück, da wir das Wörterbuch als Wert für ein neues Wörterbuch verwenden.
Verwenden einer für die Schleife
Eine weitere unkonventionelle Methode ist die Verwendung einer für die Schleife. Sie können jedes Schlüssel- und Wertpaar eines Wörterbuchs itererieren und zu einem neuen Wörterbuch hinzufügen.
Betrachten Sie das folgende Beispiel:
>>> Entwickler = "Spiele": 200, "Datenbank": 100, "full_stack": 500In diesem Fall verwenden wir eine für die Schleife, um die Wörterbuchartikel der Entwickler zu iterieren und sie dem Mitarbeiter der Mitarbeiter anzuhängen.
Schließen
In diesem Artikel wurden drei Methoden zur Behebung des Fehlers "TypeError: Nicht gravierbar: 'Diktier" in Python untersucht.