Você tem um caderno de endereços. Procura pelo nome "João" e encontra o telefone dele. Isso é um dicionário na programação: uma estrutura que mapeia chaves para valores. Se você já guardou dados relacionados em arrays paralelos e sentiu que aquilo era gambiarra, a resposta está aqui.
Dicionários (Python), objetos (JavaScript) e Mapas são a mesma ideia central com implementações diferentes. Vamos ver cada um na prática.
O Problema que Isso Resolve
Suponha que você precisa armazenar notas de alunos. Sem dicionários, faria algo como:
# Sem dicionário - código frágil
alunos = ['Ana', 'Bruno', 'Carla']
notas = [8.5, 7.0, 9.2]
# Para achar a nota do Bruno:
indice = alunos.index('Bruno')
print(notas[indice]) # 7.0
Isso quebra se houver alunos repetidos, se a ordem mudar, ou se você esquecer de manter os arrays sincronizados. Dicionários resolvem isso de forma limpa.
Dicionários em Python
Python chama essa estrutura de dict. É a implementação mais direta e didática:
# Criando um dicionário
notas_alunos = {
'Ana': 8.5,
'Bruno': 7.0,
'Carla': 9.2
}
# Acessando valores
print(notas_alunos['Bruno']) # 7.0
# Verificando existência
if 'Ana' in notas_alunos:
print(f"Nota da Ana: {notas_alunos['Ana']}")
# Iterando sobre chaves e valores
for aluno, nota in notas_alunos.items():
print(f"{aluno}: {nota}")
Dicionários aceitam qualquer tipo imutável como chave (strings, números, tuplas). O acesso é O(1) na média — quase instantâneo mesmo para milhões de itens.
Objetos em JavaScript
JavaScript usa objetos literais como dicionários. A sintaxe é semelhante, com algumas diferenças importantes:
// Objeto como dicionário
const notasAlunos = {
'Ana': 8.5,
'Bruno': 7.0,
'Carla': 9.2
};
// Acessando valores (duas formas)
console.log(notasAlunos['Bruno']); // 7.0
console.log(notasAlunos.Bruno); // 7.0
// Verificando existência
console.log('Ana' in notasAlunos); // true
// Iteração segura
for (let [aluno, nota] of Object.entries(notasAlunos)) {
console.log(`${aluno}: ${nota}`);
}
Cuidado: objetos JS herdam propriedades do prototype. Use hasOwnProperty ou Object.keys para iterar com segurança. Para dicionários puros, o Map do ES6 é mais adequado.
Mapas em JavaScript (e outras linguagens)
O Map do JavaScript resolve as limitações dos objetos como dicionários:
const notasAlunos = new Map([
['Ana', 8.5],
['Bruno', 7.0],
['Carla', 9.2]
]);
// Métodos dedicados
console.log(notasAlunos.get('Bruno')); // 7.0
console.log(notasAlunos.has('Ana')); // true
notasAlunos.set('Daniel', 6.8);
// Tamanho direto
console.log(notasAlunos.size); // 4
// Iteração limpa
notasAlunos.forEach((nota, aluno) => {
console.log(`${aluno}: ${nota}`);
});
Mapas aceitam qualquer tipo como chave (objetos, funções, NaN). Mantêm a ordem de inserção e têm performance previsível. Em Java, o equivalente seria HashMap, em C# Dictionary.
Quando Usar Cada Um
A escolha depende da linguagem e do contexto:
Em Python, use dict sempre. É otimizado e integrado à sintaxe da linguagem.
Em JavaScript, prefira Map se você precisa de:
- Chaves que não sejam strings
- Iteração frequente
- Performance previsível com muitas operações
Use objetos quando a estrutura é simples e você quer acesso por notação de ponto (ex: config.tema).
Exemplo prático: contar frequência de palavras em um texto.
def contar_palavras(texto):
frequencia = {}
palavras = texto.lower().split()
for palavra in palavras:
frequencia[palavra] = frequencia.get(palavra, 0) + 1
return frequencia
texto_exemplo = "o gato subiu no telhado o gato miou"
resultado = contar_palavras(texto_exemplo)
print(resultado)
# {'o': 3, 'gato': 2, 'subiu': 1, 'no': 1, 'telhado': 1, 'miou': 1}
Esse padrão aparece em análise de dados, processamento de formulários, configurações de sistemas, caches — praticamente tudo que exige associação rápida entre chave e valor.
Conclusão
Dicionários, objetos e mapas resolvem o mesmo problema central: armazenar e recuperar dados por uma chave. A implementação varia entre linguagens, mas o conceito é universal. Domine essa estrutura e você estará um passo à frente em qualquer linguagem que aprender.
Quer praticar esses conceitos com exercícios guiados? O MeuPasso (meupasso.com.br) tem trilhas de programação que começam do zero com exemplos práticos como este.