Pular para o conteúdo

Como iterar em um dicionário no Python?

CodeMDD.io

Como Iterar por um Dicionário em Python

Os dicionários são uma das estruturas de dados mais importantes e úteis incorporadas em Python. Eles estão em todos os lugares e são uma parte fundamental da própria linguagem. Em 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, vamos nos aprofundar em como iterar por um dicionário em Python.

Ter um bom conhecimento de iteração em 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 ilustrar os conceitos discutidos.

Começando com Dicionários em Python

Antes de mergulharmos na iteração de dicionários, é importante termos uma compreensão básica de como os dicionários funcionam em Python. Um dicionário é uma estrutura de dados que mapeia chaves a valores. Cada chave em um dicionário é única e os valores podem ser de qualquer tipo de dados válido. Vamos criar um dicionário simples para entender melhor:

person = {
'name': 'John',
'age': 30,
'city': 'New York'
}

Neste exemplo, um dicionário chamado person é criado, onde 'name', 'age' e 'city' são as chaves e 'John', 30 e 'New York' são os valores correspondentes.

Entendendo como Iterar por um Dicionário em Python

Agora que temos um dicionário, podemos começar a explorar as diferentes maneiras de iterar por ele.

Percorrendo um Dicionário Diretamente

A maneira mais simples de iterar por um dicionário é percorrendo diretamente suas chaves. Você pode fazer isso usando um loop for. Veja como pode ser feito:

for key in person:
print(key)

Neste exemplo, o loop itera por cada chave do dicionário person e imprime o valor da chave. A saída será:

name
age
city

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

Quando iteramos por um dicionário, às vezes queremos acessar tanto a chave quanto o valor associado a ela. Para fazer isso, podemos usar o método .items(). Veja como fica:

for key, value in person.items():
print(key, value)

Neste exemplo, usamos o método .items() para obter uma lista de tuplas, onde cada tupla contém um par chave-valor do dicionário. O loop for em seguida, itera por cada uma dessas tuplas e desempacota-as nas variáveis key e value. A saída será:

name John
age 30
city New York

Percorrendo as Chaves do Dicionário: O Método .keys()

Em alguns casos, você pode querer iterar apenas pelas chaves do dicionário. Para fazer isso, podemos usar o método .keys(). Veja como fica:

for key in person.keys():
print(key)

Este exemplo itera apenas pelas chaves do dicionário person, uma vez que estamos usando o método .keys(). A saída será:

name
age
city

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

Da mesma forma, às vezes só precisamos iterar pelos valores do dicionário. Podemos fazer isso usando o método .values(). Veja como fica:

for value in person.values():
print(value)

Neste exemplo, estamos apenas iterando pelos valores do dicionário person, usando o método .values(). A saída será:

John
30
New York

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

Até agora, aprendemos como iterar por um dicionário e acessar suas chaves e valores. Mas e se quisermos alterar os valores do dicionário durante a iteração? É importante ter cuidado ao fazer isso, pois pode levar a resultados inesperados.

Por exemplo, vamos supor que quiséssemos aumentar a idade de uma pessoa em 1:

for key, value in person.items():
if key == 'age':
person[key] += 1

Neste exemplo, verificamos se a chave é igual a 'age' e, se for, incrementamos o valor em 1. No entanto, essa abordagem pode levar a um erro chamado “RuntimeError: dictionary changed size during iteration”. Para evitar esse erro, podemos criar uma cópia do dicionário antes de iterar por ele:

for key, value in person.copy().items():
if key == 'age':
person[key] += 1

Ao usar o método .copy(), criamos uma cópia do dicionário original, permitindo que iteremos por ele sem afetar o tamanho do dicionário original.

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

Em certas situações, podemos querer remover itens específicos de um dicionário enquanto iteramos por ele. Para fazer isso com segurança, podemos usar um loop for reverso combinado com o método .pop().

for key in list(person.keys()):
if key == 'city':
person.pop(key)

Neste exemplo, estamos iterando pelas chaves do dicionário person usando list(person.keys()) para criar uma lista das chaves. Dessa forma, podemos remover os itens do dicionário com segurança usando o método .pop(). Certifique-se de usar list(person.keys()) em vez de person.keys() diretamente no loop for reverso, pois a iteração por um dicionário enquanto alteramos seu tamanho leva ao erro “RuntimeError: dictionary changed size during iteration”.

Exemplos de Loop for com Dicionários

Agora que você entende os conceitos básicos de iteração em dicionários, vamos explorar alguns exemplos mais complexos de loop for com dicionários.

Filtrando Itens pelo seu Valor

Vamos supor que temos um dicionário de notas de estudantes e queremos filtrar apenas os alunos que obtiveram uma nota maior ou igual a 7. Podemos fazer isso usando o seguinte código:

grades = {
'John': 8,
'Jane': 7,
'Alice': 5,
'Bob': 6,
}
passed_students = {
name: grade
for name, grade in grades.items()
if grade >= 7
}
print(passed_students)

Neste exemplo, usamos uma compreensão de dicionário para criar um novo dicionário chamado passed_students, que contém apenas os alunos que obtiveram uma nota maior ou igual a 7. A saída será:

{'John': 8, 'Jane': 7}

Executando Cálculos com Chaves e Valores

Vamos supor que temos um dicionário que contém o nome e o preço de alguns produtos e queremos calcular o preço médio dos produtos. Podemos fazer isso usando o seguinte código:

products = {
'Apple': 2.5,
'Banana': 1.8,
'Orange': 3.2,
'Mango': 4.5,
}
total_price = 0
for price in products.values():
total_price += price
average_price = total_price https://codemdd.io/ len(products)
print(average_price)

Neste exemplo, iteramos pelos valores do dicionário products e somamos todos os preços em total_price. Em seguida, dividimos total_price pelo número de produtos para obter o preço médio. A saída será:

3.0

Trocando as Chaves e Valores Durante a Iteração

Às vezes, pode ser útil trocar as chaves e os valores de um dicionário durante a iteração. Podemos fazer isso usando o seguinte código:

swapped = {
value: key
for key, value in person.items()
}
print(swapped)

Neste exemplo, usamos uma compreensão de dicionário para criar um novo dicionário chamado swapped, onde as chaves e os valores do dicionário person são trocados de posição. A saída será:

{'John': 'name', 30: 'age', 'New York': 'city'}

Conclusão

Iterar um dicionário em Python é uma habilidade essencial para escrever um código eficiente e confiável. Neste tutorial, cobrimos as diferentes maneiras de iterar por um dicionário, incluindo: percorrer diretamente, usando o método .items() para obter chaves e valores, usando o método .keys() para obter apenas as chaves, usando o método .values() para obter apenas os valores, e como alterar valores e remover itens durante a iteração.

Certifique-se de praticar esses conceitos com seus próprios exemplos e continue explorando as possibilidades de iteração em dicionários. Isso o ajudará a se tornar um programador Python mais experiente e eficiente.

Exemplos de Execução Passo a Passo

Aqui estão alguns exemplos adicionais de código Python que ilustram diferentes cenários de iteração em dicionários: