Listas, Tuplas e Dicionários em Python: Quando Usar Cada Um

Entenda as diferenças entre listas, tuplas e dicionários em Python, com exemplos simples, e aprenda a escolher a estrutura certa para cada situação.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 7 minutos

Imagem do artigo Listas, Tuplas e Dicionários em Python: Quando Usar Cada Um

Quem começa a programar em Python logo esbarra em três estruturas de dados que aparecem em quase todo código: listas, tuplas e dicionários. Todas guardam conjuntos de valores, mas cada uma tem um comportamento próprio. Escolher a estrutura certa deixa o código mais claro, mais seguro e, muitas vezes, mais eficiente. Neste artigo, você vai entender o que cada uma faz e quando usá-la.

Listas: coleções ordenadas e editáveis

A lista é a estrutura mais popular do Python. Ela guarda itens em ordem, permite repetir valores e pode ser modificada depois de criada. Usa colchetes:

frutas = ["maçã", "banana", "laranja"]
frutas.append("uva")      # adiciona no final
frutas[0] = "pera"        # altera o primeiro item
print(frutas[1])          # banana

Os itens são acessados por posição (índice), e a contagem começa em zero. Listas aceitam tipos misturados, mas na prática costuma-se manter itens do mesmo tipo para facilitar o tratamento.

Use listas quando: a ordem importa, a quantidade de itens pode mudar e você precisa percorrer os elementos em sequência, como uma lista de tarefas, de notas ou de nomes.

Tuplas: coleções ordenadas e imutáveis

A tupla se parece com a lista, mas não pode ser alterada depois de criada. Usa parênteses:

coordenada = (10.5, 20.3)
print(coordenada[0])      # 10.5
# coordenada[0] = 5       # geraria um erro

Essa imutabilidade é uma vantagem, não uma limitação. Ao usar uma tupla, você comunica que aqueles valores formam um conjunto fixo e evita alterações acidentais. Tuplas também podem ser usadas como chaves de dicionário, algo que listas não permitem.

Use tuplas quando: os dados não devem mudar, como coordenadas, datas no formato (dia, mês, ano) ou valores retornados por uma função que devolve mais de um resultado.

Dicionários: pares de chave e valor

O dicionário guarda informações associadas a nomes, em vez de posições. Cada item tem uma chave e um valor, e a busca é feita pela chave. Usa chaves:

aluno = {"nome": "Ana", "idade": 20, "curso": "Python"}
print(aluno["nome"])      # Ana
aluno["idade"] = 21       # atualiza um valor
aluno["cidade"] = "Recife"  # cria uma nova chave

As chaves devem ser únicas e de tipo imutável, como textos, números ou tuplas. Os valores podem ser de qualquer tipo, inclusive outras listas ou dicionários. Nas versões atuais do Python, os dicionários preservam a ordem em que os itens foram inseridos.

Use dicionários quando: você precisa consultar um dado pelo nome ou identificador, como cadastros, configurações ou contagem de ocorrências.

Comparação lado a lado

CaracterísticaListaTuplaDicionário
Símbolo[ ]( ){ chave: valor }
AlterávelSimNãoSim
AcessoPor índicePor índicePor chave
Permite repetiçãoSimSimValores sim, chaves não
Uso típicoSequências que mudamDados fixosDados nomeados

Operações que você vai usar o tempo todo

Algumas operações valem para as três estruturas, e outras são específicas. Vale conhecer as principais:

  • len(x): devolve a quantidade de itens em qualquer uma das três.
  • for item in x: percorre listas e tuplas item a item; em dicionários, percorre as chaves.
  • append() e remove(): adicionam e retiram itens de listas.
  • keys(), values() e items(): mostram chaves, valores ou pares de um dicionário.
  • get(): busca uma chave sem gerar erro caso ela não exista, por exemplo aluno.get("email", "não informado").

Combinando as estruturas

Na prática, esses três tipos se combinam. Um cadastro de alunos, por exemplo, pode ser uma lista de dicionários:

alunos = [
    {"nome": "Ana", "nota": 9.0},
    {"nome": "Bruno", "nota": 7.5},
]
for a in alunos:
    print(a["nome"], a["nota"])

Esse formato é muito comum ao trabalhar com dados vindos de arquivos e de serviços na web, e entendê-lo abre caminho para tarefas mais avançadas de análise e automação.

Como decidir rapidamente

Faça estas perguntas: os dados precisam ser encontrados por um nome? Use dicionário. Precisam permanecer fixos? Use tupla. Precisam crescer, encolher ou ser reordenados? Use lista. Quando houver dúvida, comece pela lista, que é a mais flexível, e migre para outra estrutura se o problema pedir.

Erros comuns de quem está começando

Alguns tropeços aparecem com frequência nos primeiros programas. O primeiro é tentar acessar uma posição que não existe em uma lista, o que gera o erro conhecido como IndexError. Sempre lembre que uma lista com três itens tem índices 0, 1 e 2. O segundo é buscar em um dicionário uma chave que não foi criada, o que produz o KeyError; o método get() é a saída elegante para esse caso.

O terceiro erro é tentar alterar uma tupla, esquecendo que ela é imutável. Se você precisa mudar os dados, converta-a em lista com list(), faça a alteração e, se quiser, volte para tupla com tuple(). Por fim, atenção a um detalhe curioso: uma tupla com um único elemento exige uma vírgula, como em (5,), caso contrário o Python entende apenas como um número entre parênteses.

Pensando em desempenho e clareza

Dicionários são muito rápidos para buscar um valor pela chave, mesmo com muitos itens, enquanto encontrar um valor específico dentro de uma lista exige percorrê-la, o que pode ser lento em coleções grandes. Por isso, se o seu programa faz muitas consultas por identificador, o dicionário costuma ser a melhor escolha. Além do desempenho, há a clareza: escrever aluno[“nome”] é mais legível do que lembrar que o nome está na posição zero de uma lista.

Vale ainda conhecer os conjuntos (set), que guardam apenas valores únicos e são ideais para remover duplicatas. Eles completam o quarteto de estruturas básicas do Python e aparecem com frequência em tarefas de limpeza de dados.

Conclusão

Listas, tuplas e dicionários são a base para organizar informações em Python. Dominar quando usar cada uma torna o código mais legível e evita erros difíceis de rastrear. Para praticar com exercícios guiados e avançar de estruturas de dados até projetos completos, confira os cursos de programação e Python da Cursa, que levam você do primeiro código às aplicações reais.

Cookies, Cache e Histórico: O Que o Navegador Guarda Sobre Você

Entenda o que são cookies, cache e histórico do navegador, para que servem, quando limpar cada um e como isso afeta sua privacidade.

Sensores e Atuadores: Como o Arduino Percebe o Mundo e Age Sobre Ele

Entenda a diferença entre sensores e atuadores, como o Arduino lê sinais e aciona dispositivos, e como montar seus primeiros projetos.

Endereço IP, Máscara de Sub-rede e Gateway: O Trio Que Faz Sua Rede Funcionar

Entenda de forma prática o que são endereço IP, máscara de sub-rede e gateway padrão, e como esses três parâmetros conversam entre si.

Compressão de Arquivos: Como o ZIP Consegue Reduzir o Tamanho dos Seus Dados

Entenda como funciona a compressão de arquivos, a diferença entre métodos com e sem perda e quando cada formato faz sentido.

Expressões Regulares (Regex): O Que São e Como Usar na Prática

Aprenda o que são expressões regulares, os principais símbolos, quantificadores e como aplicar regex para buscar e validar textos.

Como Funciona o DNS: o Sistema que Traduz Nomes em Endereços na Internet

Entenda de forma simples o que é DNS, como acontece a resolução de nomes, os principais tipos de registro e por que ele é essencial para a internet.

INNER JOIN, LEFT JOIN e RIGHT JOIN: como relacionar tabelas no SQL

Entenda de forma simples como funcionam INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN para combinar dados de várias tabelas no SQL.

TypeScript para iniciantes: o que é e por que ele melhora o JavaScript

Entenda o que é TypeScript, como a tipagem estática ajuda a evitar erros e por que ele se tornou essencial no desenvolvimento web moderno.