Os dicionários são uma das estruturas de dados mais poderosas e versáteis do Python. Eles permitem armazenar informações de forma organizada usando pares de chave e valor, facilitando o acesso rápido aos dados. Se você está começando a programar ou quer entender melhor como trabalhar com essa estrutura, este guia vai te ajudar.
Neste artigo, você vai aprender o que são dicionários, como criar e manipular essas estruturas, conhecer os principais métodos disponíveis e ver exemplos práticos de uso. Vamos explorar desde conceitos básicos até aplicações do mundo real.
Para complementar seu aprendizado, confira este vídeo explicativo sobre dicionários em Python do canal Curso em Vídeo:
O Que São Dicionários em Python
Um dicionário é uma coleção não ordenada de itens que armazena dados em pares de chave-valor. Diferente das listas em Python, onde você acessa elementos por índices numéricos, nos dicionários você usa chaves únicas para recuperar valores.
Pense em um dicionário real de português. Você procura uma palavra (chave) e encontra seu significado (valor). O mesmo acontece com dicionários em Python: cada chave está associada a um valor específico.
Os dicionários são extremamente eficientes para buscar dados. Quando você precisa acessar uma informação usando uma chave, o Python encontra o valor quase instantaneamente, mesmo em dicionários com milhares de itens.
Essa estrutura é mutável, o que significa que você pode adicionar, remover ou modificar itens depois de criar o dicionário. Isso torna os dicionários muito flexíveis para diferentes situações de programação.
Como Criar um Dicionário
Existem várias formas de criar dicionários em Python. A maneira mais comum é usar chaves {} e separar cada par chave-valor com dois pontos.
aluno = {
"nome": "Maria",
"idade": 22,
"curso": "Engenharia"
}Você também pode criar um dicionário vazio e adicionar itens depois. Isso é útil quando você não sabe quais dados terá no início do programa.
produto = {}
produto["nome"] = "Notebook"
produto["preco"] = 2500.00
produto["estoque"] = 15Outra opção é usar a função dict() para criar dicionários. Esta forma é menos comum, mas pode ser útil em algumas situações específicas.
carro = dict(marca="Toyota", modelo="Corolla", ano=2023)As chaves de um dicionário precisam ser de tipos imutáveis, como strings, números inteiros ou tuplas. Já os valores podem ser de qualquer tipo: números, textos, listas ou até outros dicionários.
Acessando Valores no Dicionário
Para recuperar um valor armazenado no dicionário, você usa a chave correspondente entre colchetes. É como procurar uma palavra específica no dicionário de português.
pessoa = {
"nome": "João",
"idade": 30,
"cidade": "São Paulo"
}
print(pessoa["nome"]) # Exibe: João
print(pessoa["idade"]) # Exibe: 30Se você tentar acessar uma chave que não existe, o Python retorna um erro. Para evitar isso, use o método get(), que retorna None quando a chave não é encontrada.
email = pessoa.get("email")
print(email) # Exibe: None
# Você pode definir um valor padrão
telefone = pessoa.get("telefone", "Não informado")
print(telefone) # Exibe: Não informadoQuando você trabalha com dados vindos de APIs ou arquivos externos, o método get() é especialmente útil para evitar erros no programa. Ele torna seu código mais robusto e confiável.
Modificando e Adicionando Itens
Modificar valores em um dicionário é muito simples. Basta acessar a chave e atribuir um novo valor, como você faria com uma variável comum.
estoque = {
"maçã": 50,
"banana": 30,
"laranja": 40
}
# Modificando a quantidade de maçãs
estoque["maçã"] = 60
print(estoque["maçã"]) # Exibe: 60Para adicionar um novo item, você simplesmente atribui um valor a uma chave que ainda não existe no dicionário. O Python automaticamente cria essa nova entrada.
estoque["uva"] = 25
print(estoque)
# Exibe: {'maçã': 60, 'banana': 30, 'laranja': 40, 'uva': 25}Você pode usar o método update() para adicionar múltiplos itens de uma vez ou atualizar valores existentes. Este método aceita outro dicionário como argumento.
estoque.update({"manga": 35, "banana": 45})
print(estoque)
# Banana foi atualizada e manga foi adicionadaRemovendo Itens do Dicionário
Existem diferentes formas de remover itens de um dicionário, cada uma adequada para situações específicas. Conhecer essas opções te dá mais controle sobre seus dados.
O método pop() remove um item pela chave e retorna o valor removido. Se a chave não existir, você pode especificar um valor padrão para evitar erros.
notas = {
"matemática": 8.5,
"português": 7.0,
"história": 9.0
}
nota_removida = notas.pop("português")
print(nota_removida) # Exibe: 7.0
print(notas) # português não está mais no dicionárioO comando del remove um item específico ou pode até deletar o dicionário inteiro. É uma forma direta de eliminar dados que você não precisa mais.
del notas["história"]
print(notas) # história foi removidaPara limpar todos os itens do dicionário mantendo a estrutura vazia, use o método clear(). Isso é útil quando você quer reutilizar o mesmo dicionário com novos dados.
notas.clear()
print(notas) # Exibe: {}Principais Métodos dos Dicionários
Os dicionários possuem diversos métodos que facilitam a manipulação de dados. Conhecer esses métodos torna seu código mais eficiente e elegante.
O método keys() retorna todas as chaves do dicionário. Isso é útil quando você quer listar ou verificar quais informações estão armazenadas.
livro = {
"titulo": "Python para Todos",
"autor": "Carlos Silva",
"paginas": 350
}
chaves = livro.keys()
print(chaves) # Exibe: dict_keys(['titulo', 'autor', 'paginas'])Para obter todos os valores, use o método values(). Ele retorna uma visualização de todos os valores armazenados no dicionário.
valores = livro.values()
print(valores) # Exibe: dict_values(['Python para Todos', 'Carlos Silva', 350])O método items() retorna pares de chave-valor como tuplas. Isso é especialmente útil quando você precisa percorrer o dicionário completo usando estruturas de repetição.
for chave, valor in livro.items():
print(f"{chave}: {valor}")
# Exibe:
# titulo: Python para Todos
# autor: Carlos Silva
# paginas: 350Iterando Sobre Dicionários
Percorrer todos os elementos de um dicionário é uma operação comum em programação. O Python oferece formas simples e eficientes de fazer isso usando o loop for.
Quando você itera diretamente sobre um dicionário, o Python percorre suas chaves. Você pode então usar essas chaves para acessar os valores correspondentes.
precos = {
"arroz": 5.50,
"feijão": 8.00,
"macarrão": 4.25
}
for produto in precos:
print(f"{produto}: R$ {precos[produto]}")Uma forma mais elegante é usar o método items(), que já fornece chave e valor em cada iteração. Isso torna o código mais limpo e fácil de entender.
for produto, preco in precos.items():
print(f"{produto}: R$ {preco}")Você também pode usar compreensão de dicionário para criar novos dicionários baseados em condições. Essa técnica é poderosa para filtrar ou transformar dados.
# Criar dicionário apenas com produtos baratos
baratos = {produto: preco for produto, preco in precos.items() if preco < 6.00}
print(baratos) # Exibe: {'arroz': 5.5, 'macarrão': 4.25}Verificando Existência de Chaves
Antes de acessar ou modificar um valor no dicionário, às vezes você precisa verificar se uma chave existe. Isso evita erros no seu programa.
O operador in verifica se uma chave está presente no dicionário. Ele retorna True ou False, permitindo que você tome decisões no código.
usuario = {
"nome": "Ana",
"email": "[email protected]"
}
if "telefone" in usuario:
print(usuario["telefone"])
else:
print("Telefone não cadastrado")Você pode combinar essa verificação com estruturas condicionais para criar lógicas mais complexas. Por exemplo, adicionar um valor apenas se a chave não existir.
if "telefone" not in usuario:
usuario["telefone"] = "(11) 98765-4321"
print(usuario)Dicionários Aninhados
Dicionários podem conter outros dicionários como valores, criando estruturas de dados mais complexas. Isso é muito útil para representar informações hierárquicas ou relacionadas.
Imagine que você precisa armazenar dados de vários alunos com suas respectivas notas. Um dicionário aninhado organiza essas informações de forma clara e acessível.
turma = {
"aluno1": {
"nome": "Pedro",
"notas": [8.5, 9.0, 7.5]
},
"aluno2": {
"nome": "Carla",
"notas": [9.5, 8.0, 9.0]
}
}
# Acessando informações específicas
print(turma["aluno1"]["nome"]) # Exibe: Pedro
print(turma["aluno2"]["notas"][0]) # Exibe: 9.5Para trabalhar com dicionários aninhados, você precisa acessar cada nível usando as chaves correspondentes. Pense nisso como abrir gavetas dentro de gavetas para encontrar o que procura.
Você pode iterar sobre dicionários aninhados usando loops dentro de loops. Isso permite processar todos os dados de forma organizada.
for aluno_id, dados in turma.items():
print(f"Nome: {dados['nome']}")
print(f"Média: {sum(dados['notas']) / len(dados['notas'])}")
print("---")Copiando Dicionários
Copiar dicionários requer atenção especial em Python. Se você simplesmente atribui um dicionário a outra variável, ambas referenciam o mesmo objeto na memória.
original = {"a": 1, "b": 2}
copia_errada = original
copia_errada["c"] = 3
print(original) # Exibe: {'a': 1, 'b': 2, 'c': 3}
# A modificação afetou o original!Para criar uma cópia independente, use o método copy(). Isso cria um novo dicionário com os mesmos pares chave-valor do original.
original = {"a": 1, "b": 2}
copia_correta = original.copy()
copia_correta["c"] = 3
print(original) # Exibe: {'a': 1, 'b': 2}
print(copia_correta) # Exibe: {'a': 1, 'b': 2, 'c': 3}Para dicionários aninhados, o método copy() cria apenas uma cópia superficial. Se você precisa copiar também os dicionários internos, use a biblioteca copy com o método deepcopy().
Diferença Entre Dicionários e Outras Estruturas
Entender quando usar dicionários em vez de outras estruturas de dados é fundamental. Cada estrutura tem características específicas que a tornam mais adequada para determinadas situações.
Ao contrário das listas, os dicionários usam chaves nomeadas em vez de índices numéricos. Isso torna o acesso aos dados mais intuitivo e semântico, especialmente quando você trabalha com informações que têm nomes específicos.
As tuplas são imutáveis, enquanto os dicionários permitem modificações. Os conjuntos não permitem duplicatas e não têm pares chave-valor. Compreender essas diferenças entre estruturas ajuda você a escolher a ferramenta certa.
| Estrutura | Ordenada | Mutável | Permite Duplicatas |
|---|---|---|---|
| Lista | Sim | Sim | Sim |
| Tupla | Sim | Não | Sim |
| Dicionário | Sim (Python 3.7+) | Sim | Chaves não, valores sim |
| Conjunto | Não | Sim | Não |
Aplicações Práticas dos Dicionários
Os dicionários têm inúmeras aplicações no mundo real da programação. Eles são especialmente úteis quando você precisa organizar dados relacionados de forma eficiente.
Uma aplicação comum é armazenar configurações de aplicativos. Em vez de usar múltiplas variáveis separadas, você agrupa todas as configurações em um único dicionário organizado.
config = {
"idioma": "pt-BR",
"tema": "escuro",
"notificacoes": True,
"volume": 80
}Dicionários são perfeitos para trabalhar com dados JSON, formato muito usado em APIs web. Quando você faz requisições HTTP usando a biblioteca requests, frequentemente recebe dicionários como resposta.
Você pode usar dicionários para contar frequências de elementos, como palavras em um texto ou produtos vendidos. Isso é muito útil em análise de dados.
texto = "python é incrível python é poderoso"
palavras = texto.split()
contagem = {}
for palavra in palavras:
if palavra in contagem:
contagem[palavra] += 1
else:
contagem[palavra] = 1
print(contagem)
# Exibe: {'python': 2, 'é': 2, 'incrível': 1, 'poderoso': 1}Dicas e Boas Práticas
Use nomes de chaves descritivos e consistentes. Isso torna seu código mais legível e fácil de manter. Prefira nomes como “nome_completo” em vez de apenas “n”.
Evite modificar um dicionário enquanto itera sobre ele. Isso pode causar erros inesperados. Se precisar fazer alterações, crie uma lista das chaves primeiro e depois modifique o dicionário.
Quando trabalhar com dicionários grandes, considere usar o método get() com valores padrão em vez de verificações if/else repetitivas. Isso deixa o código mais limpo.
Lembre-se que dicionários em Python 3.7+ mantêm a ordem de inserção dos itens. Nas versões anteriores, a ordem não era garantida. Esse comportamento pode ser importante dependendo do seu projeto.
Para trabalhar eficientemente com dados, combine dicionários com outras técnicas de Python. Por exemplo, use funções para processar dicionários ou aplique conceitos de programação orientada a objetos para criar estruturas mais complexas.
Conclusão
Os dicionários são ferramentas essenciais em Python que todo programador deve dominar. Eles oferecem uma forma elegante e eficiente de organizar dados usando pares de chave-valor, tornando seu código mais legível e performático.
Neste guia, você aprendeu desde os conceitos básicos até aplicações práticas dos dicionários. Vimos como criar, modificar, acessar e remover itens, além de conhecer os principais métodos disponíveis. Também exploramos dicionários aninhados e boas práticas de uso.
Com esse conhecimento, você está preparado para usar dicionários em seus projetos. Continue praticando com exercícios práticos e explore recursos mais avançados conforme ganha experiência. Os dicionários serão companheiros constantes na sua jornada de programação em Python.
Perguntas Frequentes (FAQ)
1. Posso usar listas como chaves de dicionário?
Não, as chaves precisam ser imutáveis. Use tuplas no lugar de listas quando precisar de uma sequência como chave.
2. Os dicionários são ordenados em Python?
Sim, a partir do Python 3.7, os dicionários mantêm a ordem de inserção dos itens.
3. Como verifico se um dicionário está vazio?
Use uma condição simples: if not meu_dict: retorna True se o dicionário estiver vazio.
4. Qual a diferença entre pop() e del?
O pop() remove e retorna o valor, permitindo valor padrão. O del apenas remove o item.
5. Posso ter valores duplicados em um dicionário?
Sim, valores podem se repetir. Apenas as chaves precisam ser únicas no dicionário.
6. Como mesclar dois dicionários?
Use o método update() ou, no Python 3.9+, o operador | para unir dicionários.
7. Dicionários são mais rápidos que listas?
Para buscas, sim. Dicionários têm acesso quase instantâneo por chave, enquanto listas precisam percorrer elementos.
8. Como ordeno um dicionário por valores?
Use a função sorted() com uma função lambda: sorted(dict.items(), key=lambda x: x[1]).
9. Posso ter um dicionário dentro de outro?
Sim, você pode criar dicionários aninhados com múltiplos níveis de profundidade.
10. O que acontece se eu acessar uma chave inexistente?
Python gera um erro KeyError. Use get() para evitar esse problema.
11. Como removo todos os itens de uma vez?
Use o método clear() para esvaziar o dicionário mantendo sua referência.
12. Dicionários ocupam muita memória?
Eles usam mais memória que listas, mas a diferença é pequena e vale pela eficiência em buscas.








