Módulo 6 - Dicionários: buscar pela etiqueta

Dicionário ou lista: quando cada um vence

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Escolher entre lista e dicionário conforme o tipo de acesso.
  • Entender por que a busca por chave no dicionário é quase instantânea.
  • Perceber o custo de procurar um item varrendo uma lista grande.
  • Reconhecer quando combinar as duas estruturas.

Cada estrutura no seu lugar

As duas estruturas parecem concorrentes, mas na verdade são especialistas em problemas diferentes. A lista é uma fila ordenada: ela guarda a sequência, o que é insubstituível quando a ordem tem significado, os colocados de uma corrida, os passos de uma receita, o histórico de mensagens. Se você precisa do terceiro item, ou vai processar todos em ordem, a lista é a casa certa. O dicionário é um balcão de atendimento por etiqueta: ele não liga para ordem, liga para associação. Se o seu acesso típico é me dê o valor da chave X, o dicionário entrega isso na hora. A pergunta que decide é: eu acesso por posição e ordem, ou por uma etiqueta identificadora?

A lista brilha quando...

  • A ordem dos itens importa (ranking, fila, histórico).
  • Você percorre todos em sequência.
  • Você acessa por posição (o primeiro, o último).

O dicionário brilha quando...

  • Você busca por uma etiqueta única (nome, código, id).
  • Você quer o valor na hora, sem varrer.
  • Cada item tem um identificador natural.

Por que a busca do dicionário é tão rápida

Aqui está a vantagem que faz o dicionário valer ouro. Procurar um contato numa lista de nomes, quando você não sabe a posição, obriga o programa a comparar um por um até achar, e no pior caso a varrer a lista inteira. Com dez nomes, tudo bem; com dez milhões, é um sofrimento a cada busca. O dicionário resolve isso com uma mágica de bastidor: ele guarda os pares de um jeito que permite pular direto ao valor da chave, sem examinar os outros. Por isso a busca por chave é quase instantânea, e o mais impressionante, praticamente não fica mais lenta conforme o dicionário cresce. Buscar num dicionário de dez itens ou de dez milhões custa quase o mesmo. Essa diferença de comportamento com o tamanho é tão central que ganha um módulo inteiro mais adiante, o de eficiência.

Duas buscas lado a lado pelo nome Caio. À esquerda, numa lista, uma seta examina Ana, depois Beto, depois Caio, um por um, com um rótulo varre até achar. À direita, num dicionário, uma seta parte da etiqueta Caio e vai direto ao valor, com um rótulo acesso direto. Um cronômetro marca lento na lista e instantâneo no dicionário.
Buscar por conteúdo na lista varre item a item; buscar por chave no dicionário vai direto ao valor.

🎮 Jogo da aula

Lista ou dicionário?

Para cada necessidade, escolha a estrutura que serve melhor: a lista ordenada ou o dicionário de etiquetas.

Combinar as duas estruturas

Na prática, listas e dicionários costumam trabalhar juntos, não separados. Um sistema de loja pode ter uma lista de pedidos em ordem de chegada (a fila) e um dicionário de produtos para consultar preço pelo código (a busca). Um jogo pode ter uma lista de jogadores na ordem dos turnos e um dicionário de pontuações por apelido. Até a combinação de estruturas dentro de estruturas é comum: uma lista de dicionários representa uma tabela em que cada linha é um registro com campos nomeados, um formato onipresente em dados reais. Saber escolher e combinar as estruturas é uma das habilidades que mais distinguem quem programa com desenvoltura, e você já tem as duas peças principais na mão.

Teste rápido

Você precisa consultar o preço de produtos milhares de vezes por segundo, sempre pelo código do produto. Por que um dicionário vence uma lista aqui?

Perguntas frequentes

Quando devo preferir a lista ao dicionário?
Quando a ordem dos itens importa ou você processa todos em sequência: rankings, filas, históricos, listas de passos. A lista guarda a ordem, coisa que o dicionário não faz seu foco. Se o seu acesso típico é por posição ou é percorrer tudo, a lista é a escolha natural.
Por que a busca no dicionário quase não fica mais lenta com o tamanho?
Porque o dicionário guarda os pares de um jeito que permite ir direto ao valor da chave, sem examinar os outros. Diferente da lista, que precisa comparar item a item quando não sabe a posição, o dicionário calcula onde a chave está. Por isso buscar em dez ou em dez milhões custa quase o mesmo.
Então o dicionário é sempre melhor que a lista?
Não. Ele é melhor para busca por etiqueta, mas não guarda ordem naturalmente e não serve para acesso por posição. Cada estrutura vence no seu terreno. Usar dicionário onde a ordem importa, ou lista onde a busca por chave é frequente, é escolher a ferramenta errada.
Dá para ter uma lista dentro de um dicionário?
Dá, e é comum. O valor de uma chave pode ser uma lista: um dicionário de alunos em que cada nome (chave) aponta para a lista de suas notas (valor). Também dá o contrário, uma lista de dicionários, muito usada para representar tabelas de registros. Combinar estruturas é o normal em dados reais.
Como represento uma tabela de dados com essas estruturas?
Um jeito clássico é uma lista de dicionários: cada item da lista é um registro (uma linha), e cada registro é um dicionário com campos nomeados (as colunas). Assim você tem a ordem das linhas pela lista e o acesso por nome de campo pelo dicionário, o melhor dos dois mundos.
Escolher a estrutura errada quebra o programa?
Geralmente não quebra, mas deixa o programa lento e o código desajeitado. Guardar uma agenda numa lista funciona, mas cada busca varre tudo; usar dicionário onde a ordem importa força gambiarras para reconstruir a sequência. Escolher certo é sobre desempenho e clareza, não sobre funcionar ou não.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.