programandoai

Dicionários: dados com nome, não com posição

Guardar os dados de um produto numa lista ['Caneta', 3.5, 120] obriga a lembrar o que cada posição significa de cabeça. Um dicionário resolve isso com nomes.

Estudar esta lição interativa →

Guardar os dados de um produto como produto = ["Caneta", 3.5, 120] funciona, mas obriga quem lê o código a decorar de cabeça que a posição 0 é o nome, a 1 é o preço e a 2 é o estoque. Seis meses depois, ninguém lembra disso de cabeça, e um produto[1] perdido no meio do código vira um mistério. Um dicionário resolve isso guardando cada valor sob um nome (a chave), em vez de uma posição numérica.

produto = {"nome": "Caneta", "preco": 3.5, "estoque": 120}

print(produto["nome"])
print(produto["preco"])

produto["estoque"] = 119
produto["marca"] = "BIC"
print(produto)

Acessar por nome (produto["preco"]) é bem mais claro do que por posição.

Um dicionário é criado entre chaves { }, com pares chave: valor separados por vírgula. Acessar um valor usa colchetes com a chave entre aspas, produto["nome"]. Para adicionar uma chave nova ou atualizar uma existente, basta atribuir: produto["estoque"] = 119 funciona nos dois casos, o dicionário decide sozinho se é criação ou atualização.

Pense num dicionário Python exatamente como um dicionário de verdade, ou uma agenda de contatos: você não procura o telefone de alguém pela posição numérica na lista, você procura pelo nome. A chave é o nome que você já sabe; o valor é a informação que você quer encontrar a partir dele.

.get() evita quebrar o programa por uma chave ausente

produto.get("marca", "sem marca") devolve o valor da chave "marca" se ela existir, ou "sem marca" (o valor padrão, opcional) se não existir, sem lançar nenhum erro. É bem mais seguro do que produto["marca"] direto quando você não tem certeza absoluta de que a chave existe.

Acessar uma chave inexistente com colchetes quebra o programa

produto["marca"], se a chave "marca" não existir no dicionário, gera KeyError: 'marca', apontando exatamente qual chave estava faltando. Diferente de uma lista (onde o erro é sobre um número de índice), aqui o Python já entrega o nome exato da chave ausente, o que costuma tornar a correção rápida: ou a chave foi digitada errada, ou ela realmente nunca foi criada naquele dicionário.

estoque = {"Caneta": 120, "Caderno": 40, "Borracha": 75}

for chave, valor in estoque.items():
    print(f"{chave}: {valor} unidades")

Use .items() para pegar chave e valor juntos no laço.

← Voltar ao índice do curso