Pular para o conteúdo

Como iterar através de um dicionário no Python?

CodeMDD.io

Como Iterar Através de um Dicionário em Python

Dicionários são uma das estruturas de dados mais importantes e úteis embutidas no Python. Eles estão em todos os lugares e são uma parte fundamental da linguagem em si. No seu código, você usará dicionários para resolver muitos problemas de programação que podem exigir a iteração através do dicionário em questão. Neste tutorial, você mergulhará fundo em como iterar através de um dicionário em Python.

Um conhecimento sólido sobre a iteração de dicionários ajudará você a escrever um código melhor e mais robusto. Em sua jornada pela iteração de dicionários, você escreverá vários exemplos que ajudarão a solidificar seu entendimento.

Começando com Dicionários em Python

Antes de explorar a iteração de dicionários, é importante entender como usar os dicionários em Python. Vamos dar uma olhada em alguns princípios básicos:

Criando um Dicionário

Você pode criar um dicionário em Python usando as chaves {} e separando as chaves e valores com dois pontos :. Aqui está um exemplo simples:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}

Acessando Valores de um Dicionário

Você pode acessar os valores de um dicionário usando a chave correspondente. Por exemplo:

print(my_dict['chave1']) # Saída: valor1

Adicionando ou Modificando Valores

Você pode adicionar um novo par de chave-valor a um dicionário existente ou alterar o valor de uma chave já existente. Por exemplo:

my_dict['chave4'] = 'valor4' # Adicionando um novo par chave-valor
my_dict['chave2'] = 'novo valor' # Alterando o valor da chave existente

Removendo Valores

Você pode remover um par de chave-valor de um dicionário usando o operador del seguido da chave correspondente. Por exemplo:

del my_dict['chave3'] # Removendo o par chave-valor

Agora que você tem uma compreensão básica de como criar, acessar, adicionar, modificar e remover valores de um dicionário em Python, vamos explorar como iterar através de um dicionário.

Entendendo Como Iterar Através de um Dicionário em Python

Existem várias maneiras de iterar através de um dicionário em Python. Vamos cobrir algumas das principais técnicas de iteração de dicionários.

Percorrendo um Dicionário Diretamente

Uma maneira simples de iterar através de um dicionário é percorrendo-o diretamente. Isso percorrerá as chaves do dicionário. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for key in my_dict:
print(key, my_dict[key])

A saída será:

chave1 valor1
chave2 valor2
chave3 valor3

Iterando Sobre os Itens do Dicionário: O Método .items()

Outra maneira de percorrer um dicionário é usando o método .items(). Esse método retorna uma visão dos pares chave-valor do dicionário como uma sequência de tuplas. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for key, value in my_dict.items():
print(key, value)

A saída será a mesma do exemplo anterior:

chave1 valor1
chave2 valor2
chave3 valor3

Iterando Através das Chaves do Dicionário: O Método .keys()

Se você só estiver interessado nas chaves do dicionário, pode usar o método .keys(). Esse método retorna uma visão das chaves do dicionário como uma sequência. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for key in my_dict.keys():
print(key)

A saída será:

chave1
chave2
chave3

Percorrendo os Valores do Dicionário: O Método .values()

Se você estiver interessado apenas nos valores do dicionário, pode usar o método .values(). Esse método retorna uma visão dos valores do dicionário como uma sequência. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for value in my_dict.values():
print(value)

A saída será:

valor1
valor2
valor3

Agora que você conhece as principais maneiras de iterar através de um dicionário em Python, vamos explorar algumas técnicas mais avançadas.

Alterando Valores do Dicionário Durante a Iteração

Ao iterar através de um dicionário, você pode encontrar situações em que precisa alterar os valores das chaves. No entanto, não é recomendado alterar um dicionário enquanto você está iterando através dele, pois isso pode levar a resultados inesperados ou a erros.

Para contornar esse problema, você pode criar uma cópia dos valores que deseja alterar durante a iteração e, em seguida, atualizar o dicionário original após a iteração. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
values_to_update = []
for key, value in my_dict.items():
if value == 'valor2':
values_to_update.append(key)
for key in values_to_update:
my_dict[key] = 'novo valor'
print(my_dict)

A saída será:

{'chave1': 'valor1', 'chave2': 'novo valor', 'chave3': 'valor3'}

Nesse exemplo, criamos uma lista values_to_update para armazenar as chaves que precisamos atualizar. Em seguida, percorremos o dicionário e adicionamos as chaves correspondentes à lista. Depois que a iteração é concluída, atualizamos os valores no dicionário original.

Removendo Itens de um Dicionário com Segurança Durante a Iteração

Assim como alterar valores durante a iteração, remover itens de um dicionário também pode gerar problemas. Se você tentar remover um item enquanto está iterando, pode encontrar problemas de deslocamento de índice ou KeyError. Para resolver esse problema, você pode criar uma cópia dos itens que deseja remover durante a iteração e, em seguida, remover os itens do dicionário original após a iteração. Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
keys_to_remove = []
for key, value in my_dict.items():
if value == 'valor2':
keys_to_remove.append(key)
for key in keys_to_remove:
del my_dict[key]
print(my_dict)

A saída será:

{'chave1': 'valor1', 'chave3': 'valor3'}

Nesse exemplo, criamos uma lista keys_to_remove para armazenar as chaves que precisamos remover. Durante a iteração, adicionamos as chaves correspondentes à lista. Depois que a iteração é concluída, removemos as chaves do dicionário original.

Exemplos de Loops com Dicionários usando o for

Agora que você sabe como iterar através de um dicionário e realizar alterações seguras durante a iteração, vamos explorar alguns exemplos de loops com dicionários.

Filtrando Itens pelo Seu Valor

Suponha que você tenha um dicionário de pontuações de testes e queira filtrar apenas os itens cujas pontuações forem maiores que 90. Você pode fazer isso usando um loop com um condicional. Veja o exemplo abaixo:

scores = {
'João': 95,
'Maria': 87,
'Pedro': 92,
'Ana': 98,
}
high_scores = {}
for name, score in scores.items():
if score > 90:
high_scores[name] = score
print(high_scores)

A saída será:

{'João': 95, 'Pedro': 92, 'Ana': 98}

Nesse exemplo, criamos um novo dicionário high_scores para armazenar apenas as chaves e valores com pontuações maiores que 90.

Realizando Cálculos com Chaves e Valores

Você também pode realizar cálculos com as chaves e valores de um dicionário durante a iteração. Por exemplo, suponha que você tenha um dicionário que represente o estoque de frutas em uma loja, onde as chaves são os nomes das frutas e os valores são as quantidades em estoque. Se você quiser saber quantas frutas diferentes estão em estoque, pode usar um loop para iterar sobre as chaves e contar o número de chaves. Veja o exemplo abaixo:

fruits_stock = {
'maçã': 10,
'banana': 5,
'laranja': 8,
'uva': 12,
}
count = 0
for fruit in fruits_stock:
count += 1
print(count)

A saída será:

4

Nesse exemplo, criamos uma variável countpara armazenar o número de frutas diferentes. A cada iteração, incrementamos o valor de count em 1.

Trocando Chaves e Valores Durante a Iteração

Às vezes, pode ser útil trocar as chaves e valores de um dicionário durante a iteração. Por exemplo, suponha que você tenha um dicionário que represente um dicionário de sinônimos, onde as chaves são palavras e os valores são suas respectivas definições. Se você precisar inverter o dicionário para que as definições se tornem as chaves e as palavras se tornem os valores, pode fazer isso usando um loop com um condicional. Veja o exemplo abaixo:

synonyms = {
'feliz': 'contente',
'triste': 'deprimido',
'grande': 'enorme',
'pequeno': 'minúsculo',
}
inverted_synonyms = {}
for word, definition in synonyms.items():
inverted_synonyms[definition] = word
print(inverted_synonyms)

A saída será:

{'contente': 'feliz', 'deprimido': 'triste', 'enorme': 'grande', 'minúsculo': 'pequeno'}

Nesse exemplo, criamos um novo dicionário inverted_synonyms para armazenar as chaves e valores invertidos do dicionário synonyms.

Compreensão de Dicionários

Uma técnica poderosa para iterar através de um dicionário é usar a compreensão de dicionários. A compreensão de dicionários é uma sintaxe concisa que permite criar dicionários de forma mais eficiente. Vamos ver alguns exemplos de compreensão de dicionários.

Filtrando Itens pelo Seu Valor: Revisitado

Vamos reescrever o exemplo anterior de filtrar itens pelo seu valor usando compreensão de dicionários. Veja o exemplo abaixo:

scores = {
'João': 95,
'Maria': 87,
'Pedro': 92,
'Ana': 98,
}
high_scores = {name: score for name, score in scores.items() if score > 90}
print(high_scores)

A saída será a mesma do exemplo anterior:

{'João': 95, 'Pedro': 92, 'Ana': 98}

Nesse exemplo, usamos a sintaxe da compreensão de dicionários para criar um novo dicionário high_scores que contém apenas as chaves e valores com pontuações maiores que 90.

Trocando Chaves e Valores Durante a Iteração: Revisitado

Aqui está como você pode reescrever o exemplo anterior de trocar chaves e valores usando compreensão de dicionários:

synonyms = {
'feliz': 'contente',
'triste': 'deprimido',
'grande': 'enorme',
'pequeno': 'minúsculo',
}
inverted_synonyms = {definition: word for word, definition in synonyms.items()}
print(inverted_synonyms)

A saída será a mesma do exemplo anterior:

{'contente': 'feliz', 'deprimido': 'triste', 'enorme': 'grande', 'minúsculo': 'pequeno'}

Nesse exemplo, usamos a sintaxe da compreensão de dicionários para criar um novo dicionário inverted_synonyms que contém as chaves e valores invertidos do dicionário synonyms.

Iterando Através de um Dicionário em Ordem Ordenada e Inversa

Por padrão, a iteração através de um dicionário não segue nenhuma ordem específica. No entanto, se você quiser iterar através de um dicionário em uma ordem ordenada ou reversa, pode usar algumas técnicas.

Iterando Sobre as Chaves Ordenadas

Você pode iterar sobre as chaves do dicionário em ordem ordenada usando a função sorted() junto com o método .keys(). Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for key in sorted(my_dict.keys()):
print(key)

A saída será:

chave1
chave2
chave3

Nesse exemplo, usamos a função sorted() para obter uma lista ordenada das chaves do dicionário e, em seguida, iteramos sobre essa lista ordenada.

Percorrendo os Valores em Ordem Ordenada

Da mesma forma, você pode percorrer os valores do dicionário em ordem ordenada usando a função sorted() junto com o método .values(). Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for value in sorted(my_dict.values()):
print(value)

A saída será:

valor1
valor2
valor3

Nesse exemplo, usamos a função sorted() para obter uma lista ordenada dos valores do dicionário e, em seguida, iteramos sobre essa lista ordenada.

Ordenando um Dicionário com uma Compreensão

Se você quiser criar um novo dicionário com as chaves e valores do dicionário original em ordem ordenada, pode fazer isso usando uma compreensão de dicionários em conjunto com as funções sorted() e .items(). Veja o exemplo abaixo:

my_dict = {
'chave1': 3,
'chave2': 1,
'chave3': 2,
}
sorted_dict = {key: value for key, value in sorted(my_dict.items(), key=lambda item: item[1])}
print(sorted_dict)

A saída será:

{'chave2': 1, 'chave3': 2, 'chave1': 3}

Nesse exemplo, usamos a função sorted() para obter uma lista ordenada de tuplas (key, value) do dicionário e, em seguida, usamos uma compreensão de dicionários para criar um novo dicionário sorted_dict com as chaves e valores ordenados.

Iterando Através de um Dicionário em Ordem Reversa

Se você quiser iterar através de um dicionário em ordem reversa, pode usar a função reversed() junto com o método .keys(). Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for key in reversed(list(my_dict.keys())):
print(key)

A saída será:

chave3
chave2
chave1

Nesse exemplo, usamos a função reversed() para inverter a ordem da lista das chaves do dicionário e, em seguida, iteramos sobre essa lista invertida.

Percorrendo os Valores em Ordem Reversa

Da mesma forma, você pode percorrer os valores do dicionário em ordem reversa usando a função reversed() junto com o método .values(). Veja o exemplo abaixo:

my_dict = {
'chave1': 'valor1',
'chave2': 'valor2',
'chave3': 'valor3',
}
for value in reversed(list(my_dict.values())):
print(value)

A saída será:

valor3
valor2
valor1

Nesse exemplo, usamos a função reversed() para inverter a ordem da lista dos valores do dicionário e, em seguida, iteramos sobre essa lista invertida.

Ordenando um Dicionário em Ordem Reversa com uma Compreensão

Se você quiser criar um novo dicionário com as chaves e valores do dicionário original em ordem reversa, pode fazer isso usando uma compreensão de dicionários em conjunto com a função reversed() e o método .items(). Veja o exemplo abaixo:

my_dict = {
'chave1': 3,
'chave2': 1,
'chave3': 2,
}
reversed_dict = {key: value for key, value in reversed(list(my_dict.items()))}
print(reversed_dict)

A saída será:

{'chave3': 2, 'chave2': 1, 'chave1': 3}

Nesse exemplo, primeiro convertemos o método .items() em uma lista para podermos usar a função reversed(). Em seguida, usamos uma compreensão de dicionários para criar um novo dicionário reversed_dict com as chaves e valores na ordem reversa.

Agora que você conhece várias técnicas para iterar através de um dicionário em Python, você está pronto para aplicar esse conhecimento em seus próprios projetos! Tenha em mente que a escolha da técnica de iteração depende das necessidades específicas do seu código. Experimente e adapte-as conforme necessário. Aproveite a flexibilidade e o poder dos dicionários em Python!

Conclusão

Neste tutorial, você aprendeu várias formas de iterar através de um dicionário em Python. Você viu como percorrer um dicionário diretamente, como usar os métodos .items(), .keys() e .values() para percorrer os itens, chaves e valores do dicionário, e como realizar alterações e remoções seguras durante a iteração. Você também aprendeu sobre compreensão de dicionários e como iterar em ordem ordenada e reversa. Agora você tem todas as ferramentas necessárias para escrever código mais eficiente e robusto com dicionários em Python. Continue praticando e explorando para aprimorar suas habilidades!