Dicionários em Python: Tudo o que você precisa saber – Aula 10

Dicionários em Python

Entre as estruturas de dados mais versáteis do Python, os dicionários se destacam. Eles nos ajudam a representar dados estruturados com chaves e valores, como informações de usuários, configurações de sistemas e respostas de APIs. Nesta décima aula do nosso curso de Python, vou mostrar como os dicionários funcionam, como manipulá-los e por que você deve dominá-los.

O que é um dicionário em Python?

Dicionários em Python são coleções de pares chave:valor. Eles são mutáveis, dinâmicos e não permitem chaves duplicadas. A sintaxe é simples:

dados = {"nome": "Ana", "idade": 30, "cidade": "São Paulo"}
print(dados)
# Saída: {'nome': 'Ana', 'idade': 30, 'cidade': 'São Paulo'}

Também é possível usar outros tipos como chave, desde que sejam hashable, como tuplas:

coordenadas = {(1, 2): "Ponto A", (3, 4): "Ponto B"}
print(coordenadas)
# Saída: {(1, 2): 'Ponto A', (3, 4): 'Ponto B'}

Isso é ótimo quando preciso indexar valores com coordenadas ou pares complexos.

Acessando valores e manipulando dicionários em Python

Para acessar um valor, basta usar a chave entre colchetes:

print(dados["nome"])
# Saída: Ana

Se eu tentar acessar uma chave que não existe, recebo um erro. Para evitar isso, uso o método get():

print(dados.get("email"))
# Saída: None

Esse comportamento é muito útil quando estou lidando com entradas de usuários ou dados vindos de fontes externas, onde nem sempre tenho garantia da estrutura.

Posso adicionar ou modificar pares com simplicidade:

dados["email"] = "[email protected]"
dados["idade"] = 31
print(dados)
# Saída: {'nome': 'Ana', 'idade': 31, 'cidade': 'São Paulo', 'email': '[email protected]'}

Para remover um par, o pop() é bastante direto:

dados.pop("cidade")
print(dados)
# Saída: {'nome': 'Ana', 'idade': 31, 'email': '[email protected]'}

Se quiser limpar o dicionário inteiro:

dados.clear()
print(dados)
# Saída: {}

E para copiar um dicionário sem afetar o original:

dados = {"nome": "Ana", "idade": 30}
copia = dados.copy()
print(copia)
# Saída: {'nome': 'Ana', 'idade': 30}

Iterando sobre dicionários em Python

Para percorrer um dicionário, geralmente uso o for com o método items():

for chave, valor in dados.items():
    print(f"{chave}: {valor}")
# Saída:
# nome: Ana
# idade: 30

Se quero apenas as chaves ou os valores, posso usar keys() ou values():

for chave in dados.keys():
    print(chave)
# Saída:
# nome
# idade
for valor in dados.values():
    print(valor)
# Saída:
# Ana
# 30

E também posso verificar se uma chave existe:

if "email" in dados:
    print("Chave encontrada!")
else:
    print("Chave ausente!")
# Saída: Chave ausente!

Dicionários aninhados: um recurso poderoso

Dá para criar dicionários dentro de dicionários. Isso é muito comum quando lido com dados estruturados de APIs, por exemplo:

usuario = {
    "nome": "Carlos",
    "email": "[email protected]",
    "endereço": {
        "cidade": "Belo Horizonte",
        "uf": "MG"
    },
    "permissoes": ["admin", "editor"]
}

print(usuario["endereço"]["cidade"])
# Saída: Belo Horizonte

E posso navegar por estruturas mais complexas misturando listas e dicionários:

sistema = {
    "usuarios": [
        {"nome": "Ana", "ativo": True},
        {"nome": "João", "ativo": False}
    ]
}

for u in sistema["usuarios"]:
    if u["ativo"]:
        print(u["nome"])
# Saída:
# Ana

Boas práticas com dicionários em Python

Algumas dicas que costumo seguir:

  • Sempre valido se a chave existe antes de acessar diretamente.
  • Uso defaultdict do módulo collections quando preciso de valores padrão.
  • Aproveito dict comprehensions para construir dicionários de forma elegante.
  • Quando preciso manter a ordem de inserção, confio no comportamento padrão do Python 3.7+, que já garante isso.

Exemplo de dict comprehension:

quadrados = {x: x**2 for x in range(5)}
print(quadrados)
# Saída: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

E com defaultdict:

from collections import defaultdict

contagem = defaultdict(int)
palavras = ["python", "codigo", "python", "dicionario"]

for palavra in palavras:
    contagem[palavra] += 1

print(contagem)
# Saída: defaultdict(<class 'int'>, {'python': 2, 'codigo': 1, 'dicionario': 1})

Casos de uso reais com dicionários em Python

Imagine que você está construindo uma lista de compras. Um dicionário pode te ajudar a armazenar os itens e suas quantidades:

compras = {
    "maçã": 4,
    "banana": 6,
    "pão": 1
}

for item, quantidade in compras.items():
    print(f"{item}: {quantidade}")
# Saída:
# maçã: 4
# banana: 6
# pão: 1

Se eu quiser adicionar ou atualizar a quantidade de um item:

compras["banana"] = 10
compras["leite"] = 2
print(compras)
# Saída: {'maçã': 4, 'banana': 10, 'pão': 1, 'leite': 2}

Esse é um exemplo simples, mas mostra bem como os dicionários em Python podem ser aplicados a tarefas do dia a dia de forma prática.

Conclusão

Dominar os dicionários em Python é essencial para qualquer pessoa que queira escrever código limpo, expressivo e eficiente. Eles aparecem em praticamente todo projeto que desenvolvo, seja no backend, seja em scripts para automação. Entender bem como funcionam te permite lidar melhor com JSONs, configurações e armazenamento de dados dinâmicos. Quanto mais uso Python, mais percebo que os dicionários são a base de uma programação idiomática e robusta.

Se quiser se aprofundar mais, recomendo a documentação oficial sobre dicionários.

Você também pode gostar