Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Compreensões de Dicionário | Compreensões de Listas e Dicionários
Tutorial de Loops em Python
Seção 4. Capítulo 3
single

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).
Note
Nota

Ao contrário das listas, os dicionários exigem tanto uma chave quanto um valor, separados por dois pontos (:) e utilizam {} em vez de [].

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)

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.

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)

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 city e country), 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)
Tarefa

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

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt