single
Compreensões de Dicionário
Deslize para mostrar o menu
Compreensões de dicionário oferecem uma maneira concisa de criar dicionários em Python, semelhante às compreensões de listas. Permitem transformar dados em pares chave-valor em uma única linha de código.
No essencial, uma compreensão de dicionário básica permite construir um novo dicionário aplicando uma expressão a cada par chave-valor em uma variável iterável.
{key_expression: value_expression for item in iterable}
key_expression: define a chave para cada par chave-valor;value_expression: define o valor correspondente à chave;iterable: a fonte dos itens a serem processados (por exemplo, uma lista, range ou outro iterável).
Ao contrário das listas, os dicionários exigem tanto uma chave quanto um valor, separados por dois pontos (:) e utilizam {} em vez de [].
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)
Este código percorre a lista travel_wishlist, onde cada sublista contém um destino e seu orçamento. O laço for atribui o destino como chave e o orçamento como valor no dicionário 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)
Este exemplo utiliza compreensão de dicionário para alcançar o mesmo resultado do exemplo anterior. Cada destino se torna uma chave e seu respectivo custo se torna o valor no dicionário travel_budget, tudo em uma única linha.
Lidando com ValueError ao Desempacotar Itens com Mais de Dois Elementos
Ao utilizar compreensões de dicionário, frequentemente você desempacota itens de um iterável em variáveis para chaves e valores. Se cada item no seu iterável contém mais de dois elementos (como uma lista de [city, country, budget]), tentar desempacotar em apenas duas variáveis resultará em um ValueError.
Por exemplo, se você escrever:
{city: country for city, country in travel_wishlist}
e travel_wishlist contém sublistas com três elementos, o Python exibirá este erro:
ValueError: too many values to unpack (expected 2)
Por que isso acontece?
- O Python espera desempacotar exatamente dois valores (para
cityecountry), mas cada sublista possui três. - Essa diferença faz com que o Python lance um ValueError, informando claramente que mais valores foram fornecidos do que o esperado.
Como lidar com isso?
- Desempacote todos os elementos, mas utilize apenas o necessário:
for city, country, budget in travel_wishlist — atribua cada valor a uma variável.
- Ignore valores não utilizados com um sublinhado:
for city, country, _ in travel_wishlist — o sublinhado _ é uma convenção comum para variáveis não utilizadas.
- Utilize slicing para selecionar elementos:
for city, country in [item[:2] for item in travel_wishlist] — fatie cada sublista para os dois primeiros elementos antes de desempacotar.
Ao igualar o número de variáveis ao número de elementos em cada item, ou ao ignorar dados não utilizados, você evita erros de desempacotamento e mantém suas compreensões de dicionário limpas e legíveis.
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)
Deslize para começar a programar
Um viajante deseja organizar sua travel_wishlist mapeando cada nome de cidade para seu respectivo país. Para realizar isso de forma eficiente, é necessário transformar os dados em um dicionário.
- Extraia os nomes das cidades e seus respectivos países de
travel_wishlist. - Armazene o dicionário resultante em
city_to_country.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo