Ordbokskomprehension med Villkor
Du kan lägga till ett villkor i en dictionary comprehension för att filtrera poster dynamiskt när du skapar ordboken. Syntaxen för en dictionary comprehension med villkor är:
{key_expression: value_expression for item in iterable if condition}
12345678910111213141516travel_wishlist = [ ['Paris', 'France', 2000], ['Tokyo', 'Japan', 3000], ['New York', 'USA', 2500], ['Kyoto', 'Japan', 1500], ['Sydney', 'Australia', 4000] ] # Filter destinations within a $2500 budget using a for loop affordable_destinations = {} for city, country, budget in travel_wishlist: if budget <= 2500: # Check if the budget is within the limit affordable_destinations[city] = budget print(affordable_destinations)
Den här koden itererar genom listan travel_wishlist och kontrollerar om varje resmåls budget är mindre än eller lika med $2500. Om villkoret uppfylls läggs staden och dess budget till i ordboken affordable_destinations.
123456789101112travel_wishlist = [ ['Paris', 'France', 2000], ['Tokyo', 'Japan', 3000], ['New York', 'USA', 2500], ['Kyoto', 'Japan', 1500], ['Sydney', 'Australia', 4000] ] # Use dictionary comprehension to filter destinations affordable_destinations = {city: budget for city, country, budget in travel_wishlist if budget <= 2500} print(affordable_destinations) # Output: {'Paris': 2000, 'New York': 2500, 'Kyoto': 1500}
Detta exempel uppnår samma resultat som det föregående, men på ett mer koncist och elegant sätt. Villkoret if budget <= 2500 filtrerar destinationerna baserat på budgeten, och den resulterande ordboken innehåller endast de prisvärda destinationerna.
Om du försöker packa upp endast två variabler (city och budget) kommer Python inte att kunna bearbeta varje element i listan korrekt, eftersom varje underlista innehåller tre element (city, country och budget). Detta kommer att orsaka ett fel, eftersom Python försöker tilldela tre element till två variabler.
Så här skulle det se ut:
affordable_destinations = {city: budget for city, budget in travel_wishlist if budget <= 2500}
Denna kod kommer att ge ett ValueError: not enough values to unpack (expected 2, got 3), eftersom varje element i listan har tre värden och du försöker packa upp endast två.
Swipe to start coding
En resenär vill filtrera sin travel_wishlist för att endast inkludera destinationer i Japan. För att göra detta effektivt behöver du extrahera relevanta stad-budget-par till en ordbok.
- Filtrera
travel_wishlistså att endast destinationer där landet är"Japan"inkluderas. - Spara den resulterande ordboken i
japanese_destinations.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain how dictionary comprehensions work in more detail?
What are some other examples of using conditions in dictionary comprehensions?
Can you show how to filter by country instead of budget?
Fantastiskt!
Completion betyg förbättrat till 5
Ordbokskomprehension med Villkor
Svep för att visa menyn
Du kan lägga till ett villkor i en dictionary comprehension för att filtrera poster dynamiskt när du skapar ordboken. Syntaxen för en dictionary comprehension med villkor är:
{key_expression: value_expression for item in iterable if condition}
12345678910111213141516travel_wishlist = [ ['Paris', 'France', 2000], ['Tokyo', 'Japan', 3000], ['New York', 'USA', 2500], ['Kyoto', 'Japan', 1500], ['Sydney', 'Australia', 4000] ] # Filter destinations within a $2500 budget using a for loop affordable_destinations = {} for city, country, budget in travel_wishlist: if budget <= 2500: # Check if the budget is within the limit affordable_destinations[city] = budget print(affordable_destinations)
Den här koden itererar genom listan travel_wishlist och kontrollerar om varje resmåls budget är mindre än eller lika med $2500. Om villkoret uppfylls läggs staden och dess budget till i ordboken affordable_destinations.
123456789101112travel_wishlist = [ ['Paris', 'France', 2000], ['Tokyo', 'Japan', 3000], ['New York', 'USA', 2500], ['Kyoto', 'Japan', 1500], ['Sydney', 'Australia', 4000] ] # Use dictionary comprehension to filter destinations affordable_destinations = {city: budget for city, country, budget in travel_wishlist if budget <= 2500} print(affordable_destinations) # Output: {'Paris': 2000, 'New York': 2500, 'Kyoto': 1500}
Detta exempel uppnår samma resultat som det föregående, men på ett mer koncist och elegant sätt. Villkoret if budget <= 2500 filtrerar destinationerna baserat på budgeten, och den resulterande ordboken innehåller endast de prisvärda destinationerna.
Om du försöker packa upp endast två variabler (city och budget) kommer Python inte att kunna bearbeta varje element i listan korrekt, eftersom varje underlista innehåller tre element (city, country och budget). Detta kommer att orsaka ett fel, eftersom Python försöker tilldela tre element till två variabler.
Så här skulle det se ut:
affordable_destinations = {city: budget for city, budget in travel_wishlist if budget <= 2500}
Denna kod kommer att ge ett ValueError: not enough values to unpack (expected 2, got 3), eftersom varje element i listan har tre värden och du försöker packa upp endast två.
Swipe to start coding
En resenär vill filtrera sin travel_wishlist för att endast inkludera destinationer i Japan. För att göra detta effektivt behöver du extrahera relevanta stad-budget-par till en ordbok.
- Filtrera
travel_wishlistså att endast destinationer där landet är"Japan"inkluderas. - Spara den resulterande ordboken i
japanese_destinations.
Lösning
Tack för dina kommentarer!
single