Dict comprehensions e zip: combinando coleções
Construir um dicionário a partir de uma lista, ou combinar duas listas paralelas em pares, também tem seu jeito compacto e pythônico.
Estudar esta lição interativa →A mesma ideia da list comprehension se aplica a dicionários: uma dict comprehension constrói um dicionário inteiro numa linha, no formato {chave: valor for item in lista}.
numeros = [1, 2, 3, 4]
quadrados = {numero: numero ** 2 for numero in numeros}
print(quadrados)Cada número da lista vira uma chave, e seu quadrado vira o valor correspondente.
Outro problema comum: você tem duas listas paralelas (mesma posição, dados relacionados), como uma lista de nomes e uma lista de notas na mesma ordem, e precisa combiná-las em pares. É exatamente para isso que existe zip(lista1, lista2): ele entrega pares (item_de_lista1, item_de_lista2), um de cada lista, na mesma posição.
nomes = ["Ana", "Bruno", "Carla"]
notas = [8.5, 6.0, 9.2]
for nome, nota in zip(nomes, notas):
print(f"{nome}: {nota}")zip combina as duas listas posição a posição.
Pense em zip como o fecho de um zíper de verdade, unindo duas fileiras de dentes, um de cada lado, par a par. Se um dos lados do zíper for mais curto que o outro, o fecho simplesmente para onde o lado mais curto acaba, sobrando dentes soltos do outro lado.
{nome: nota for nome, nota in zip(nomes, notas)} transforma duas listas paralelas direto num dicionário nome-para-nota, numa linha só, combinando os dois recursos desta lição.
Se nomes tem 4 itens e notas tem só 3, zip(nomes, notas) devolve apenas 3 pares, descartando o quarto nome sem avisar nada, sem erro. Esse é um bug silencioso clássico ao combinar dados de fontes diferentes que deveriam estar sincronizadas, mas não estão: sempre vale conferir se len(nomes) == len(notas) antes de confiar no resultado de um zip.
produtos = ["Caneta", "Caderno", "Borracha"]
precos = [3.5, 18.9, 2.0]
catalogo = {nome: preco for nome, preco in zip(produtos, precos)}
print(catalogo)Combine zip com uma dict comprehension.
maiores_que(lista, limite) usando uma list comprehension: ela deve devolver, na mesma ordem, só os números de lista que são estritamente maiores que limite.def maiores_que(lista, limite):
# devolva, numa list comprehension, os itens de lista maiores que limite
pass
🧩 Este é um exercício com correção automática — abra no app para completá-lo e verificar.