single
Ordbogsforståelser
Stryg for at vise menuen
Ordbogsforståelser giver en kortfattet måde at oprette ordbøger i Python på, svarende til listeforståelser. De gør det muligt at omdanne data til nøgle-værdi-par på én linje kode.
Grundlæggende gør en ordbogsforståelse det muligt at konstruere en ny ordbog ved at anvende et udtryk på hvert nøgle-værdi-par i en itererbar variabel.
{key_expression: value_expression for item in iterable}
key_expression: definerer nøglen for hvert nøgle-værdi-par;value_expression: definerer værdien, der svarer til nøglen;iterable: kilden til elementer, der skal behandles (f.eks. en liste, range eller en anden itererbar).
I modsætning til lister kræver ordbøger både en nøgle og en værdi, adskilt af et kolon (:), og bruger {} i stedet for [].
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)
Denne kode itererer gennem listen travel_wishlist, hvor hver underliste indeholder en destination og dens budget. for-løkken tildeler destinationen som nøgle og budgettet som værdi i ordbogen travel_budget.
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)
Dette eksempel bruger dictionary comprehension til at opnå det samme resultat som det forrige eksempel. Hver destination bliver en nøgle, og den tilsvarende pris bliver værdien i travel_budget-ordbogen, alt sammen på én linje.
Håndtering af ValueError ved udpakning af elementer med mere end to værdier
Ved brug af dictionary comprehensions udpakkes ofte elementer fra en iterabel til variabler for nøgler og værdier. Hvis hvert element i din iterabel indeholder mere end to værdier (for eksempel en liste med [city, country, budget]), vil et forsøg på at udpakke til kun to variabler forårsage en ValueError.
For eksempel, hvis du skriver:
{city: country for city, country in travel_wishlist}
og travel_wishlist indeholder underlister med tre elementer, vil Python give denne fejl:
ValueError: too many values to unpack (expected 2)
Hvorfor sker dette?
- Python forventer at udpakke præcis to værdier (for
cityogcountry), men hver underliste har tre. - Denne uoverensstemmelse får Python til at kaste en ValueError, som tydeligt angiver, at der gives flere værdier end forventet.
Hvordan kan dette håndteres?
- Udpak alle elementer, men brug kun de nødvendige:
for city, country, budget in travel_wishlist — tildel hver værdi til en variabel.
- Ignorér ubrugte værdier med en underscore:
for city, country, _ in travel_wishlist — underscore _ er en almindelig konvention for ubrugte variabler.
- Brug slicing til at vælge elementer:
for city, country in [item[:2] for item in travel_wishlist] — slice hver underliste til de første to elementer før udpakning.
Ved at matche antallet af variabler med antallet af elementer i hvert element, eller ved at ignorere ubrugte data, undgås udpakningsfejl, og dictionary comprehensions forbliver overskuelige og læsbare.
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)
Swipe to start coding
En rejsende ønsker at organisere deres travel_wishlist ved at kortlægge hvert bynavn til det tilsvarende land. For at gøre dette effektivt skal du omdanne dataene til en ordbog.
- Udtræk bynavne og deres tilsvarende lande fra
travel_wishlist. - Gem den resulterende ordbog i
city_to_country.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat