Como Iterar em um Dicionário Python de Forma Simples?
Como Iterar por um Dicionário em Python
Os dicionários são uma das estruturas de dados mais importantes e úteis incorporadas na linguagem Python. Eles estão presentes em todos os lugares e são uma parte fundamental da própria linguagem. No seu código, você usará dicionários para resolver muitos problemas de programação que podem exigir a iteração pelo dicionário em questão. Neste tutorial, você se aprofundará em como iterar por um dicionário em Python.
Um conhecimento sólido da iteração de dicionário ajudará você a escrever um código melhor e mais robusto. Durante a sua jornada pela iteração de dicionário, você escreverá diversos exemplos que o ajudarão a entender e dominar esse conceito.
Começando com Dicionários Python
Antes de começar a aprender como iterar por um dicionário em Python, é importante entender a estrutura e a sintaxe básica de um dicionário. Um dicionário é uma coleção não ordenada de pares chave-valor, onde cada chave é única e associa-se a um valor específico.
Veja um exemplo básico de um dicionário em Python:
Nesse exemplo, temos um dicionário chamado frutas
que mapeia o nome de algumas frutas para suas respectivas cores. A chave é o nome da fruta e o valor é a cor correspondente.
Agora que você já tem uma noção básica de como os dicionários funcionam, vamos explorar diferentes maneiras de iterar por eles.
Entendendo como Iterar por um Dicionário em Python
Existem várias maneiras diferentes de iterar por um dicionário em Python, cada uma com suas próprias vantagens e usos específicos. Nas seções a seguir, vamos abordar algumas dessas técnicas.
Percorrendo um Dicionário diretamente
Uma maneira simples de iterar por um dicionário em Python é percorrê-lo diretamente usando um loop for
. Nesse caso, o loop iterará pelas chaves do dicionário.
Aqui está um exemplo que demonstra essa forma de iteração:
Nesse exemplo, o loop imprime cada chave do dicionário frutas
. A saída será:
Percorrendo os Pares Chave-Valor: O Método .items()
Outra forma comum de iterar por um dicionário é percorrer os pares chave-valor. Para fazer isso, usamos o método .items()
, que retorna uma lista de tuplas contendo cada par chave-valor do dicionário.
Veja um exemplo dessa abordagem:
Nesse exemplo, o loop imprime cada par chave-valor do dicionário frutas
. A saída será:
Percorrendo as Chaves do Dicionário: O Método .keys()
Se você estiver interessado apenas nas chaves de um dicionário, pode utilizar o método .keys()
, que retorna uma lista com todas as chaves do dicionário.
Veja um exemplo:
Nesse exemplo, o loop imprime apenas as chaves do dicionário frutas
. A saída será a mesma do exemplo anterior:
Percorrendo os Valores do Dicionário: O Método .values()
Da mesma forma que é possível percorrer as chaves de um dicionário, também é possível percorrer apenas os valores usando o método .values()
, que retorna uma lista com todos os valores do dicionário.
Veja um exemplo:
Nesse exemplo, o loop imprime apenas os valores do dicionário frutas
. A saída será:
Alterando Valores do Dicionário Durante a Iteração
Em determinados casos, pode ser necessário alterar os valores de um dicionário enquanto o percorremos. No entanto, é importante ter cuidado ao fazer isso, pois pode levar a resultados inesperados.
Veja um exemplo:
Nesse exemplo, estamos percorrendo o dicionário frutas
e alterando o valor da chave “maçã” de “vermelha” para “verde”. No final, imprimimos o dicionário completo para ver as alterações.
A saída será:
Portanto, é possível alterar os valores do dicionário durante a iteração, mas é importante considerar os possíveis efeitos colaterais das modificações.
Removendo Itens de um Dicionário com Segurança Durante a Iteração
Outra situação comum ao iterar por um dicionário é remover itens do mesmo durante o processo. No entanto, fazer isso diretamente pode causar erros e comportamentos inesperados.
Para remover itens de um dicionário de forma segura durante a iteração, podemos utilizar o método .copy()
para criar uma cópia temporária do dicionário. Em seguida, aplicamos as modificações na cópia e as refletimos no dicionário original.
Veja um exemplo:
Nesse exemplo, removemos todas as frutas de cor “vermelha” do dicionário frutas
. Para fazer isso com segurança, criamos uma cópia temporária do dicionário original usando o método .copy()
. Em seguida, percorremos a cópia e removemos os itens correspondentes do dicionário original.
A saída será:
Iterando por Dicionários: Exemplos de Loops for
Além das técnicas mencionadas anteriormente, os loops for
podem ser utilizados de maneiras mais específicas para se iterar por dicionários. Nas seções a seguir, vamos abordar alguns exemplos de loops for
com dicionários.
Filtrando Itens pelo Valor
Em alguns casos, pode ser necessário filtrar os itens de um dicionário com base no seu valor. Podemos fazer isso utilizando um loop for
e uma estrutura condicional.
Veja um exemplo:
Nesse exemplo, filtramos apenas as frutas de cor “vermelha” do dicionário frutas
e criamos um novo dicionário chamado frutas_vermelhas
contendo apenas essas frutas.
A saída será:
Realizando Cálculos com Chaves e Valores
Os loops for
também podem ser utilizados para realizar cálculos com as chaves e valores de um dicionário. Podemos utilizar os valores do dicionário para calcular um resultado específico e armazená-lo em uma variável.
Veja um exemplo:
Nesse exemplo, estamos calculando o valor total das frutas representadas pelo dicionário precos
. Ao percorrer o dicionário, somamos os preços das frutas à variável total
.
A saída será:
Trocando Chaves e Valores Durante a Iteração
Por fim, podemos utilizar um loop for
para trocar as chaves pelos valores e os valores pelas chaves de um dicionário.
Veja um exemplo:
Nesse exemplo, criamos um novo dicionário chamado cores_frutas
que mapeia as cores das frutas para seus respectivos nomes. Ao percorrer o dicionário frutas
, trocamos as chaves pelos valores e vice-versa.
A saída será:
Iterando por Dicionários: Exemplos de Compreensões
Outra forma mais concisa de iterar por dicionários em Python é utilizando as chamadas compreensões de dicionário. As compreensões são uma maneira de criar dicionários (ou outras estruturas de dados) com base em uma expressão concisa e em uma estrutura for
ou if
.
Nas seções a seguir, vamos ver alguns exemplos de compreensões de dicionário aplicadas à iteração por dicionários.
Filtrando Itens pelo Valor: Revisitado
Podemos utilizar as compreensões de dicionário para filtrar os itens de um dicionário com base no seu valor de forma mais concisa.
Veja um exemplo:
Nesse exemplo, utilizamos uma compreensão de dicionário para criar um novo dicionário chamado frutas_vermelhas
que contém apenas as frutas de cor “vermelha” do dicionário frutas
.
A saída será a mesma do exemplo anterior:
Trocando Chaves e Valores Durante a Iteração: Revisitado
Da mesma forma que fizemos com a iteração tradicional, podemos utilizar compreensões de dicionário para trocar as chaves pelos valores e os valores pelas chaves.
Veja um exemplo:
Nesse exemplo, a compreensão de dicionário cria um novo dicionário chamado cores_frutas
que mapeia as cores das frutas para seus respectivos nomes invertidos. As chaves e os valores são trocados durante a iteração.
A saída será a mesma do exemplo anterior:
Trabalhando com Ordem Classificada e Ordem Reversa
Em Python, os dicionários não são ordenados, o que significa que não há garantia de que a iteração por eles manterá uma ordem específica. No entanto, às vezes é necessário percorrer um dicionário em uma ordem classificada ou em ordem reversa.
Nas seções a seguir, mostraremos como fazer iterações ordenadas e em ordem reversa.
Percorrendo as Chaves em Ordem Ordenada
Podemos percorrer as chaves de um dicionário em ordem ordenada utilizando a função sorted()
para classificar as chaves antes de iterar por elas.
Veja um exemplo:
Nesse exemplo, utilizamos a função sorted()
para classificar as chaves do dicionário frutas
antes de iterar por elas. Isso nos permite percorrer as chaves na ordem “banana”, “laranja”, “maçã”.
A saída será:
Percorrendo os Valores em Ordem Ordenada
Da mesma forma que fizemos com as chaves, podemos percorrer os valores de um dicionário em ordem ordenada utilizando a função sorted()
.
Veja um exemplo:
Nesse exemplo, utilizamos a função sorted()
para classificar os valores do dicionário frutas
antes de iterar por eles. Isso nos permite percorrer os valores na ordem “amarela”, “laranja”, “vermelha”.
A saída será:
Classificando um Dicionário com uma Compreensão
Podemos utilizar uma compreensão de dicionário para criar um novo dicionário classificado com base nos valores de um dicionário original.
Veja um exemplo:
Nesse exemplo, utilizamos uma compreensão de dicionário para criar um novo dicionário chamado frutas_classificadas
. Esse dicionário é uma versão classificada do dicionário frutas
, onde as frutas são classificadas com base em suas cores.
A saída será:
Percorrendo um Dicionário em Ordem Reversa
Se você precisar percorrer um dicionário em ordem reversa, pode utilizar a função reversed()
para inverter a ordem das chaves do dicionário antes de iterar por elas.
Veja um exemplo:
Nesse exemplo, utilizamos a função reversed()
para inverter a ordem das chaves do dicionário frutas
antes de iterar por elas. Isso nos permite percorrer as chaves na ordem “laranja”, “banana”, “maçã”.
A saída será:
Percorrendo um Dicionário em Ordem Reversa Classificada
Podemos combinar as técnicas mencionadas anteriormente para percorrer um dicionário em ordem reversa e classificada. Nesse caso, utilizamos a função reversed()
e a função sorted()
em conjunto.
Veja um exemplo:
Nesse exemplo, utilizamos a função sorted()
para classificar as chaves do dicionário frutas
antes de inverter a ordem utilizando reversed()
. Isso nos permite percorrer as chaves na ordem reversa classificada.
A saída será:
Iterando por um Dicionário Destrutivamente com o Método .popitem()
Podemos utilizar o método .popitem()
para percorrer um dicionário de forma destrutiva, ou seja, removendo os itens do dicionário durante a iteração.
Veja um exemplo:
Nesse exemplo, utilizamos um loop while
para percorrer o dicionário frutas
até que ele esteja vazio. A cada iteração, utilizamos o método .popitem()
para remover um item aleatório do dicionário e atribuir suas chaves e valores às variáveis fruta
e cor
, respectivamente.
A saída será:
Utilizando Funções Embutidas para Iterar de Forma Implícita por Dicionários
Além dos loops for
, existem algumas funções embutidas em Python que permitem a iteração implícita por dicionários. Duas delas são as funções map()
e filter()
.
Aplicando Uma Transformação nos Itens de um Dicionário: map()
A função map()
pode ser utilizada para aplicar uma transformação nos itens de um dicionário. Ela recebe uma função e um iterável, como um dicionário, e retorna um iterador contendo o resultado da aplicação da função a cada item do dicionário.
Veja um exemplo:
Nesse exemplo, estamos utilizando a função map()
para aplicar a função lambda item: (item[0], item[1].upper())
a cada item do dicionário frutas
. Essa função retorna uma tupla contendo a chave e o valor do item, onde o valor é convertido para maiúsculas.
A saída será:
Filtrando Itens de Um Dicionário: filter()
A função filter()
pode ser utilizada para filtrar os itens de um dicionário com base em uma condição. Ela recebe uma função de filtro e um iterável, como um dicionário, e retorna um iterador contendo apenas os itens que satisfazem a condição.
Veja um exemplo:
Nesse exemplo, estamos utilizando a função filter()
para filtrar apenas os itens do dicionário frutas
que possuem o valor “vermelha”. Essa função recebe a função de filtro lambda item: item[1] == "vermelha"
que verifica se o valor do item é igual a “vermelha”.
A saída será:
Percorrendo Múltiplos Dicionários Como Um Só
As bibliotecas Python oferecem várias maneiras de percorrer múltiplos dicionários como se fossem um só. Duas dessas maneiras são utilizando as classes ChainMap
e chain()
do módulo itertools
.
Percorrendo Múltiplos Dicionários com ChainMap
A classe ChainMap
permite combinar vários dicionários em uma única estrutura de dados. Ela cria uma cadeia de mapeamentos, onde a pesquisa por uma chave em um dicionário é feita sequencialmente em todos os dicionários encadeados.
Veja um exemplo:
Nesse exemplo, utilizamos a classe ChainMap
para criar uma cadeia de mapeamentos contendo os dicionários frutas
, legumes
e alimentos
. Em seguida, percorremos a cadeia utilizando um loop for
para imprimir todos os alimentos e suas cores.
A saída será:
Percorrendo Múltiplos Dicionários com chain()
A função chain()
do módulo itertools
também pode ser utilizada para percorrer múltiplos dicionários como se fossem um só. Ela recebe dois ou mais iteráveis como argumentos e retorna um iterador que percorre os elementos de cada iterável em sequência.
Veja um exemplo:
Nesse exemplo, utilizamos a função chain()
para criar um iterador que percorre os itens dos dicionários frutas
, legumes
e alimentos
. Em seguida, utilizamos um loop for
para imprimir os alimentos e suas cores.
A saída será a mesma do exemplo anterior:
Percorrendo Dicionários Mesclados: O Operador de Desempacotamento (**)
O operador de desempacotamento (**), também conhecido como desempacotador, pode ser utilizado para percorrer dicionários mesclados.
Veja um exemplo:
Nesse exemplo, utilizamos o operador de desempacotamento (** frutas, ** outros_frutas) para criar um novo dicionário chamado todos_os_frutas
, que contém todas as frutas dos dicionários frutas
e outros_frutas
. Em seguida, percorremos o novo dicionário com um loop for
para imprimir todas as frutas e suas cores.
A saída será:
Principais Conclusões
A iteração por dicionários é uma habilidade fundamental para qualquer programador Python. Neste tutorial, você aprendeu várias técnicas e métodos para iterar por um dicionário de forma eficiente e segura.
Aqui estão alguns pontos principais a levar em consideração:
-
Você pode percorrer um dicionário diretamente usando um loop
for
. -
O método
.items()
permite percorrer pares chave-valor de um dicionário. -
O método
.keys()
permite percorrer apenas as chaves de um dicionário. -
O método
.values()
permite percorrer apenas os valores de um dicionário. -
É possível alterar valores de um dicionário durante a iteração, mas é importante tomar cuidado com os possíveis efeitos colaterais.
-
Utilize o método
.copy()
para remover itens de um dicionário de forma segura durante a iteração. -
A utilização de compreensões de dicionário pode tornar a iteração por um dicionário mais concisa e elegante.
-
Utilize as funções embutidas
map()
efilter()
para iterar por um dicionário de forma implícita. -
As classes
ChainMap
echain()
permitem percorrer múltiplos dicionários como se fossem um só. -
O operador de desempacotamento (**) pode ser utilizado para percorrer dicionários mesclados.
Agora que você aprendeu essas técnicas de iteração por dicionários em Python, você estará preparado para resolver diversos problemas de programação de forma eficiente e elegante.