Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Wörterbuch-Komprehensionen | Listen- und Wörterbuchverständnisse
Python Loops Tutorial
Abschnitt 4. Kapitel 3
single

single

Wörterbuch-Komprehensionen

Swipe um das Menü anzuzeigen

Dictionary Comprehensions bieten eine prägnante Möglichkeit, Dictionaries in Python zu erstellen, ähnlich wie List Comprehensions. Sie ermöglichen die Umwandlung von Daten in Schlüssel-Wert-Paare in einer einzigen Codezeile.

Im Kern erlaubt eine grundlegende Dictionary Comprehension das Erstellen eines neuen Dictionaries, indem ein Ausdruck auf jedes Schlüssel-Wert-Paar in einer iterierbaren Variable angewendet wird.

{key_expression: value_expression for item in iterable}
  • key_expression: definiert den Schlüssel für jedes Schlüssel-Wert-Paar;
  • value_expression: definiert den zum Schlüssel gehörenden Wert;
  • iterable: die Quelle der zu verarbeitenden Elemente (z. B. eine Liste, ein Bereich oder ein anderes iterierbares Objekt).
Note
Hinweis

Im Gegensatz zu Listen benötigen Dictionaries sowohl einen Schlüssel als auch einen Wert, getrennt durch einen Doppelpunkt (:), und verwenden {} anstelle von [].

12345678910111213141516
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Initialize an empty dictionary travel_budget = {} # Populate the dictionary using a for loop for destination, cost in travel_wishlist: travel_budget[destination] = cost print(travel_budget)

Dieser Code iteriert durch die Liste travel_wishlist, wobei jede Unterliste ein Reiseziel und das dazugehörige Budget enthält. Die for-Schleife weist das Reiseziel als Schlüssel und das Budget als Wert im Dictionary travel_budget zu.

123456789101112
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Create the dictionary using dictionary comprehension travel_budget = {destination: cost for destination, cost in travel_wishlist} print(travel_budget)

In diesem Beispiel wird ein Dictionary Comprehension verwendet, um das gleiche Ergebnis wie im vorherigen Beispiel zu erzielen. Jede Destination wird zu einem Schlüssel und die zugehörigen Kosten zum Wert im Dictionary travel_budget, alles in einer einzigen Zeile.

Behandlung von ValueError beim Entpacken von Elementen mit mehr als zwei Werten

Beim Einsatz von Dictionary Comprehensions werden häufig Elemente aus einem Iterable in Variablen für Schlüssel und Werte entpackt. Enthält jedoch jedes Element im Iterable mehr als zwei Werte (zum Beispiel eine Liste wie [city, country, budget]), führt das Entpacken in nur zwei Variablen zu einem ValueError.

Beispielsweise, wenn Sie schreiben:

{city: country for city, country in travel_wishlist}

und travel_wishlist Unterlisten mit drei Elementen enthält, gibt Python folgenden Fehler aus:

ValueError: too many values to unpack (expected 2)

Warum passiert das?

  • Python erwartet genau zwei Werte zum Entpacken (für city und country), aber jede Unterliste enthält drei Werte.
  • Diese Diskrepanz führt dazu, dass Python einen ValueError ausgibt, der klar angibt, dass mehr Werte bereitgestellt werden als erwartet.

Wie kann man das handhaben?

  • Alle Elemente entpacken, aber nur die benötigten verwenden:

for city, country, budget in travel_wishlist — jedem Wert wird eine Variable zugewiesen.

  • Nicht benötigte Werte mit Unterstrich ignorieren:

for city, country, _ in travel_wishlist — der Unterstrich _ ist eine gängige Konvention für ungenutzte Variablen.

  • Slicing verwenden, um Elemente auszuwählen:

for city, country in [item[:2] for item in travel_wishlist] — jede Unterliste wird vor dem Entpacken auf die ersten beiden Elemente reduziert.

Durch das Anpassen der Anzahl der Variablen an die Anzahl der Elemente oder das Ignorieren ungenutzter Daten lassen sich Entpackungsfehler vermeiden und Dictionary Comprehensions bleiben übersichtlich und lesbar.

1234567891011121314151617181920
# Example data: each tuple has three elements (city, country, budget) travel_wishlist = [ ("Paris", "France", 2000), ("Tokyo", "Japan", 3000), ("New York", "USA", 2500) ] # Attempting to unpack only two variables (incorrect) try: city_to_country = {city: country for city, country in travel_wishlist} except ValueError as e: print("Error:", e) # Correct: unpack all elements, using underscore for unused value city_to_country = {city: country for city, country, _ in travel_wishlist} print("Handled with underscore:", city_to_country) # Correct: use slicing to select only needed elements city_to_country = {item[0]: item[1] for item in travel_wishlist} print("Handled with slicing:", city_to_country)
Aufgabe

Wischen, um mit dem Codieren zu beginnen

Ein Reisender möchte seine travel_wishlist organisieren, indem er jeden Stadtnamen dem entsprechenden Land zuordnet. Um dies effizient zu erreichen, soll die Datenstruktur in ein Dictionary umgewandelt werden.

  • Extrahiere die Stadtnamen und die zugehörigen Länder aus travel_wishlist.
  • Speichere das resultierende Dictionary in city_to_country.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt