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).
Im Gegensatz zu Listen benötigen Dictionaries sowohl einen Schlüssel als auch einen Wert, getrennt durch einen Doppelpunkt (:), und verwenden {} anstelle von [].
12345678910111213141516travel_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.
123456789101112travel_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
cityundcountry), 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)
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
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen