Dicionários: chave e valor

Representar registros e associações por chaves significativas.

Dicionários: chave e valor

Objetivo da aula

Representar registros e associações por chaves significativas.

Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.

Começando do zero

Dicionário (dict) associa chaves a valores. Em vez de acessar apenas por posição, você pode buscar um dado pelo nome da chave. Isso é ótimo para representar registros como pessoa, produto ou tarefa.

Uma imagem mental para entender

Pense em um armário com gavetas etiquetadas “nome”, “idade” e “cidade”. Você não precisa lembrar que “cidade está na terceira gaveta”; usa a etiqueta. Dicionários funcionam com essa ideia de chave → valor.

Conceitos essenciais, sem pular etapas

Chave e valor

Em {"nome": "Ana", "idade": 20}, "nome" e "idade" são chaves; os dados associados são valores.

Acesso

pessoa["nome"] exige que a chave exista; caso contrário, ocorre KeyError.

get()

pessoa.get("telefone") retorna None se a chave não existir, ou outro padrão se fornecido. Isso é útil quando a ausência é aceitável e tratada explicitamente.

Atualização

pessoa["idade"] = 21 altera a associação para aquela chave. Uma nova chave pode ser criada da mesma forma.

Iteração

Podemos percorrer chaves, valores ou pares com métodos como items().

Modelo mental

CHAVE → CONSULTA/ATRIBUIÇÃO → VALOR → REGISTRO ESTRUTURADO

Exemplo 1 — primeiro veja o programa inteiro

pessoa = {
    "nome": "Ana",
    "idade": 20,
    "cidade": "Recife"
}

print(pessoa["nome"])
pessoa["idade"] = 21
pessoa["ativo"] = True
print(pessoa)

Agora vamos ler linha por linha

  • O literal usa chaves e valores separados por dois pontos.
  • O acesso por "nome" busca semanticamente o campo, não uma posição numérica.
  • A idade é atualizada pela mesma chave.
  • "ativo" não existia e é adicionado com valor booleano.

Saída esperada

O nome é mostrado e depois o dicionário atualizado.

Exemplo 2 — o mesmo conceito em outra situação

produto = {"nome": "Caderno", "preco": 12.5}
print(produto.get("estoque"))
print(produto.get("estoque", 0))

A primeira busca retorna None; a segunda usa 0 como valor padrão. Isso não cria a chave no dicionário, apenas define o retorno da consulta.

Experimento guiado

Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.

  1. Crie um dicionário de livro com título, autor e páginas.
  2. Altere o número de páginas e adicione uma chave disponivel.
  3. Teste acesso direto a uma chave inexistente e depois compare com get().
  4. Percorra for chave, valor in dicionario.items() e mostre os pares.

Mini desafio

Crie um dicionário para uma tarefa com título, duração em minutos e estado concluído. Depois marque-a como concluída.

Solução comentada

tarefa = {
    "titulo": "Estudar listas",
    "duracao_min": 40,
    "concluida": False
}

tarefa["concluida"] = True
print(tarefa)

Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.

Erros comuns e por que acontecem

  • Confundir chave com posição e tentar pessoa[0] quando as chaves são strings.
  • Acessar chave ausente com colchetes sem prever KeyError.
  • Usar get() e ignorar que None pode significar ausência.
  • Criar chaves inconsistentes como "nome", "Nome" e "NOME" para o mesmo conceito.

Cheque se você realmente entendeu

O que um dicionário associa?

Resposta: Chaves a valores.

Qual a diferença básica entre d["x"] e d.get("x") quando x não existe?

Resposta: O acesso por colchetes gera KeyError; get() retorna um padrão, normalmente None.

Como atualizar uma chave existente?

Resposta: Atribuindo um novo valor: d[chave] = valor.

Resumo em linguagem simples

Nesta aula, o ponto central foi Dicionários: chave e valor. Tente explicar o modelo CHAVE → CONSULTA/ATRIBUIÇÃO → VALOR → REGISTRO ESTRUTURADO sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.

Conexão com a próxima aula

Na próxima aula, Processando coleções de registros, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.