Dicionários em Python: guardando informações com nome
Dicionário é uma coleção que guarda valores associados a nomes, chamados chaves, escrita entre chaves, como {"nome": "Ana", "idade": 25}. Em vez de acessar por posição, como na lista, você acessa pelo nome: pessoa["nome"]. Serve para guardar cadastros, preços, contagens e qualquer dado em que cada item tem um rótulo.
A ideia: uma ficha com campos
Uma lista guarda itens em fila, e você pergunta "qual é o terceiro?". Um dicionário funciona como uma ficha de cadastro: cada campo tem um nome (a chave) e um conteúdo (o valor), e você pergunta "qual é o nome?" ou "qual é a idade?". Compare com as listas.
Criando e acessando
pessoa = {"nome": "Ana", "idade": 25, "cidade": "Recife"}
print(pessoa["nome"])
print(pessoa["idade"])Resultado:
Ana
25Cada par chave: valor é separado dos outros por vírgula. Para ler um valor, coloque a chave entre colchetes.
Adicionando e alterando
pessoa = {"nome": "Ana", "idade": 25}
pessoa["idade"] = 26
pessoa["cidade"] = "Recife"
print(pessoa)Resultado:
{'nome': 'Ana', 'idade': 26, 'cidade': 'Recife'}Se a chave já existe, o valor é trocado. Se não existe, o par é criado. Desde o Python 3.7, o dicionário mantém a ordem em que os itens foram inseridos.
Quando a chave não existe: get
Pedir uma chave que não existe gera KeyError. Para evitar o erro, use .get(), que devolve um valor padrão:
pessoa = {"nome": "Ana"}
print(pessoa.get("idade"))
print(pessoa.get("idade", "não informada"))
print("nome" in pessoa)Resultado:
None
não informada
True
Percorrendo um dicionário
precos = {"café": 8.5, "pão": 5.0, "leite": 6.0}
for produto, preco in precos.items():
print(produto, preco)Resultado:
café 8.5
pão 5.0
leite 6.0O .items() entrega cada par, e você recebe a chave e o valor de uma vez. Também existem .keys() (só as chaves) e .values() (só os valores).
Um uso clássico: contar coisas
Imagine uma votação e a necessidade de contar quantos votos cada opção teve:
votos = ["a", "b", "a", "c", "a", "b"]
contagem = {}
for voto in votos:
contagem[voto] = contagem.get(voto, 0) + 1
print(contagem)Resultado:
{'a': 3, 'b': 2, 'c': 1}Para cada voto, o código pega a contagem atual (ou 0, se ainda não existe) e soma 1.
Erros comuns
- Esquecer as aspas na chave:
pessoa[nome]procura uma variável, epessoa["nome"]procura a chave de texto. - Pedir uma chave que não existe e receber
KeyError. Use.get()ou confira comin. - Repetir a mesma chave: a última vence, porque as chaves são únicas.
Some um carrinho de compras
Rode o código e confira o total. Depois adicione um produto ao dicionário de preços e ao carrinho, e preveja o novo total.
precos = {"café": 8.5, "pão": 5.0, "leite": 6.0}
carrinho = ["café", "pão", "pão"]
total = 0
for item in carrinho:
total = total + precos[item]
print(total)
Resultado esperado:
18.5
Para cada item do carrinho, o código busca o preço no dicionário pelo nome do produto e soma ao total: 8.5 + 5.0 + 5.0.
Perguntas frequentes
Qual a diferença entre lista e dicionário?
Na lista você acessa por posição (0, 1, 2...). No dicionário você acessa por um nome, a chave.
Que tipos podem ser chave?
Textos, números e outros valores que não mudam. Uma lista, por exemplo, não pode ser chave.
O dicionário guarda a ordem dos itens?
Sim. Desde o Python 3.7, a ordem em que os itens foram inseridos é mantida.
Como remover um item?
Use del pessoa["idade"] ou pessoa.pop("idade"), que também devolve o valor removido.
Fontes e para saber mais
Apoie o EasyCode 💜
O EasyCode é gratuito, independente e sem anúncios. Manter a plataforma rápida, com compiladores no navegador e novos conteúdos atualizados tem custos reais todo mês. Se o site está te ajudando a aprender, veja como apoiar o projeto para continuarmos sempre no ar e acessíveis para todos.
Próximo passo da trilhaComo ler uma mensagem de erro em Python sem pânico (com exemplos reais)