CodeGym /Curso Java /Python SELF PT /Loops e Compreensões de Dicionários

Loops e Compreensões de Dicionários

Python SELF PT
Nível 11 , Lição 6
Disponível

6.1 Uso de enumerate()

A gente já viu como trabalhar com loops por keys, values e items em dicionários. Agora, vamos dar uma olhada mais detalhada na função enumerate().

A função enumerate() é útil para iterar sobre elementos de um dicionário, permitindo acesso tanto a índices quanto a chaves e valores.

Aqui estão alguns exemplos de como usar enumerate() com dicionários:

Iteração sobre chaves e valores de dicionário com índices

Você pode usar enumerate() para iterar sobre chaves e valores de um dicionário, enquanto obtém os índices.


# Dicionário com dados de uma pessoa
person = {"name": "Alice", "age": 25, "city": "New York"}

# Iterar sobre chaves e valores do dicionário com índices
for index, (key, value) in enumerate(person.items()):
    print(f"Índice: {index}, Chave: {key}, Valor: {value}")
    # Exibe o índice, chave e valor de cada elemento do dicionário

Saída:


Índice: 0, Chave: name, Valor: Alice
Índice: 1, Chave: age, Valor: 25
Índice: 2, Chave: city, Valor: New York

Transformação de valores de dicionário usando índices

Você pode usar enumerate() para alterar os valores de um dicionário com base em seus índices.


# Dicionário original
person = {"name": "Alice", "age": 25, "city": "New York"}

# Novo dicionário com índices nos valores
indexed_person = {}
for index, (key, value) in enumerate(person.items()):
    indexed_person[key] = f"{value}_{index}"
    # Atribui ao valor no dicionário o índice como string

print(indexed_person) 
# Exibe o dicionário com índices adicionados aos valores

Saída:


{'name': 'Alice_0', 'age': '25_1', 'city': 'New York_2'}

Usando enumerate() para criar um novo dicionário

Você pode usar enumerate() para criar um novo dicionário, onde os índices serão as chaves.


# Dicionário original
person = {"name": "Alice", "age": 25, "city": "New York"}

# Novo dicionário onde os índices são usados como chaves
indexed_person = {index: (key, value) for index, (key, value) in enumerate(person.items())}
print(indexed_person)
# Exibe o novo dicionário com índices como chaves

Saída:


{0: ('name', 'Alice'), 1: ('age', 25), 2: ('city', 'New York')}

6.2 Compreensões de Dicionários

Já usamos List Comprehensions para gerar listas e Set Comprehensions para gerar conjuntos. Da mesma forma, podemos usar a sintaxe de compreensões para criar dicionários. Dictionary Comprehensions (compreensões de dicionários) permitem escrever código mais conciso e legível para criar dicionários.

A sintaxe básica de dictionary comprehension é assim:


{expressão1: expressão2 for variável in sequência if condição}

onde

  • variável — variável que assume o valor de cada elemento do objeto iterável.
  • sequência — objeto iterável (por exemplo, lista, tupla, string) que a variável percorre.
  • expressão1 — expressão para gerar as chaves do dicionário. Geralmente depende da variável.
  • expressão2 — expressão para gerar os valores do dicionário.
  • condição — (opcional) condição que deve ser satisfeita para incluir o elemento no dicionário.

Exemplo 1:

Criando um dicionário com os quadrados dos números


# Criando um dicionário onde as chaves são números de 1 a 5 e os valores são seus quadrados
squares = {x: x ** 2 for x in range(1, 6)}
print(squares)  # Saída: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Exemplo 2:

Criando um dicionário a partir de uma lista de tuplas


# Lista de tuplas contendo pares chave-valor
pairs = [("name", "Alice"), ("age", 25), ("city", "New York")]

# Gerando um dicionário a partir da lista de tuplas
person = {key: value for key, value in pairs}
print(person)  # Saída: {'name': 'Alice', 'age': 25, 'city': 'New York'}

Exemplo 3:

Filtrando elementos ao criar um dicionário


# Criando um dicionário onde as chaves são números de 1 a 10 e os valores são seus quadrados
# Apenas para números pares
even_squares = {x: x ** 2 for x in range(1, 11) if x % 2 == 0}
print(even_squares)  # Saída: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

Exemplo 4:

Transformando elementos ao criar um dicionário


# Lista de strings
words = ["apple", "banana", "cherry"]

# Gerando um dicionário onde as chaves são strings e os valores são seus comprimentos
word_lengths = {word: len(word) for word in words}
print(word_lengths)  # Saída: {'apple': 5, 'banana': 6, 'cherry': 6}

Compreensões de dicionários aninhados


# Lista de listas com pares chave-valor
nested_pairs = [[("a", 1), ("b", 2)], [("c", 3), ("d", 4)]]

# Gerando um dicionário a partir de lista aninhada
nested_dict = {key: value for sublist in nested_pairs for key, value in sublist}
print(nested_dict)  # Saída: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

Maneiras combinadas

Você pode combinar diferentes maneiras de criar dicionários para casos mais complexos.


# Unindo múltiplos dicionários em um só
dict1 = {"name": "John", "age": 30}
dict2 = {"city": "New York", "country": "USA"}
combined_dict = {**dict1, **dict2}
print(combined_dict)  # Saída: {'name': 'John', 'age': 30, 'city': 'New York', 'country': 'USA'}

O uso do operador ** antes do nome do dicionário permite descompactar seus elementos, como se estivessem listados individualmente. Assim, a expressão {**dict1, **dict2} efetivamente combina os elementos de ambos os dicionários.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION