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ística | Lista | Tupla | Dicionário |
|---|---|---|---|
| Símbolo | [ ] | ( ) | { chave: valor } |
| Alterável | Sim | Não | Sim |
| Acesso | Por índice | Por índice | Por chave |
| Permite repetição | Sim | Sim | Valores sim, chaves não |
| Uso típico | Sequências que mudam | Dados fixos | Dados 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.



























