Python-Typ dict

Die Python-Sprache legt fest, was als Schlussel in einem Wörterbuch verwendet werden kann. In einem Python-Wörterbuch mussen alle Schlussel hashfähig sein.

Wenn Sie versuchen, beim Hinzufugen eines Schlussels zu einem W√∂rterbuch einen nicht hashbaren Schlusseltyp zu verwenden, sto√üen Sie auf den Typ "TypeError: unhashable: ‚Äòdict‚Äô‚" error.

In diesem Leitfaden sprechen wir daruber, was dieser Fehler bedeutet und warum er ausgelöst wird. Wir gehen ein Beispiel fur diesen Fehler durch, damit Sie lernen können, wie Sie ihn in Ihrem Code lösen können.

TypeError: unhashable type: ‘dict’

Wörterbucher bestehen aus zwei Teilen: Schlussel und Werte. Schlussel sind die Bezeichner, die an einen Wert gebunden sind. Wenn Sie auf einen Schlussel verweisen, können Sie den diesem Schlussel zugeordneten Wert abrufen.

Nur hashfähige Objekte können Schlussel in einem Wörterbuch sein. Unveränderliche Objekte wie Strings, Ganzzahlen, tuples und Frozensets sind mit einigen Ausnahmen hashfähig. Wörterbucher können daher nicht als Schlussel in einem Wörterbuch verwendet werden.

Um einem W√∂rterbuch ein Element hinzuzufugen, mussen Sie einen gultigen hashf√§higen Schlussel angeben. Zum Beispiel "Name‚" ist ein gultiger Schlussel, aber { "name‚": "test‚" } nicht.

Ein Beispielszenario

Hier schreiben wir ein Programm, das alle Kuchen, die mehr als funfmal in einer Bäckerei verkauft wurden, von einem Wörterbuch in ein anderes hinzufugt.

Beginnen Sie, indem Sie eine Liste von Kuchen deklarieren, die Wörterbucher zu jedem Kuchen enthält. Wir definieren auch ein Wörterbuch, in dem wir die Kuchen speichern können, die mehr als funfmal verkauft wurden.

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten. Lassen Sie sich noch heute in ein Bootcamp einweisen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Unsere "Kuchen‚" list enth√§lt drei W√∂rterbucher. Jedes W√∂rterbuch enth√§lt zwei Schlussel und Werte. Die Schlusselnamen sind "Kuchen‚" und "verkauft‚".

Jetzt schreiben wir eine for-Schleife, die unsere Kuchenliste durchgeht und die verkauften findet mehr als funf Mal. Diese Kuchen werden dem "sold_more_than_five‚"-W√∂rterbuch hinzugefugt:

In unserer for-Schleife vergleichen wir, ob der Wert von "sold‚" in jedem W√∂rterbuch gr√∂√üer als 5 ist. Wenn ja, wird dieses Element zu unserem "sold_more_than_five‚"-W√∂rterbuch hinzugefugt Eine Nachricht wird auf der Konsole ausgegeben, die den Benutzer daruber informiert, dass der bestimmte Kuchen mehr als funfmal verkauft wurde.

Sobald unsere Schleife ausgefuhrt wurde, drucken wir t er ‚Äûmehr_als_funf verkauft‚" W√∂rterbuch in die Konsole.

Fuhren Sie unseren Code aus, um sicherzustellen, dass unser Programm funktioniert:

Unser Code gibt einen Fehler zuruck.

Die Lösung

Unser Code funktioniert nicht, weil wir versuchen, einen Wörterbuchschlussel mit einem anderen Wörterbuch zu erstellen.

Der Wert von "c‚" entspricht einem W√∂rterbuch aus unserem "Kuchen‚" auffuhren. Das bedeutet, wenn wir versuchen, einen Artikel zu "sold_more_than_five‚" W√∂rterbuch, wir versuchen versehentlich, ein W√∂rterbuch als Schlussel hinzuzufugen:

Wenn unser "wenn‚" -Anweisung wird auf dem "Karottenkuchen‚" cake, unser Code versucht zu laufen:

Dies ist ungultig, da wir versuchen, ein W√∂rterbuch als Schlussel zu einem W√∂rterbuch hinzuzufugen. Wir k√∂nnen dieses Problem l√∂sen, indem wir c["name‚"] als Namen unseres W√∂rterbuchschlussels verwenden:

Fuhren Sie unseren Code mit diesem uberarbeiteten Code aus:

Unser Code läuft erfolgreich. Wir verwenden jetzt den Namen jedes Kuchens als Schlussel und nicht als Wörterbuch.

Schlussfolgerung

Der Fehler "TypeError: unhashable type: ‚Äòdict‚Äô‚" wird ausgegeben, wenn Sie versuchen, ein Element in einem W√∂rterbuch zu erstellen, dessen Schlussel ein unhashable ist Als Schlussel in einem W√∂rterbuch k√∂nnen nur unver√§nderliche Objekte wie Strings, Tupel und ganze Zahlen verwendet werden.

Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie beim Erstellen eines Elements in . nur hashfähige Objekte verwenden ein Wörterbuch. Jetzt sind Sie bereit, diesen häufigen Python-Fehler wie ein professioneller Entwickler zu beheben!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method