Estruturas de dados em Python: listas, tuplas, dicts e sets na prática
Listas, tuplas, dicts e sets — quando usar cada um, com exemplos e comparações práticas
Saber guardar um valor em uma variável é o começo. O problema real é quando você tem 50 valores — nomes de alunos, preços de produtos, tarefas de um projeto. É aqui que entram as estruturas de dados do Python.
Lista: a mais usada de todas
Uma lista guarda múltiplos valores em ordem. Você cria com colchetes, acessa pelo índice (que começa em 0) e pode modificar livremente.
frutas = ["maçã", "banana", "manga"]
print(frutas[0]) # maçã
print(frutas[-1]) # manga (índice negativo conta do fim)
frutas.append("uva") # adiciona ao fim
frutas.remove("banana") # remove pelo valor
print(len(frutas)) # 3
Iterando sobre uma lista
for fruta in frutas:
print(f"Fruta: {fruta}")
# Com índice também:
for i, fruta in enumerate(frutas):
print(f"{i}: {fruta}")
Tupla: lista que não muda
Tuplas são como listas, mas imutáveis — você não pode adicionar, remover ou alterar itens depois de criada. Usa parênteses.
coordenadas = (-23.5, -46.6)
print(coordenadas[0]) # -23.5
# coordenadas[0] = 0 ← TypeError: isso quebra
Use tupla quando os dados não devem mudar: coordenadas, configurações fixas, dias da semana. É mais rápida que lista e deixa claro no código que aquilo não vai ser modificado.
Dicionário: dados com nome
Enquanto listas acessam por posição, dicionários acessam por chave. Perfeito para representar um objeto com múltiplas propriedades.
aluno = {
"nome": "Maria",
"idade": 22,
"aprovado": True
}
print(aluno["nome"]) # Maria
aluno["nota"] = 9.5 # adiciona nova chave
del aluno["aprovado"] # remove chave
# Evita KeyError com .get():
print(aluno.get("cpf", "não informado"))
Iterando sobre dicionário
for chave, valor in aluno.items():
print(f"{chave}: {valor}")
Set: coleção sem duplicatas
Um set guarda valores únicos e não tem ordem. É a estrutura certa quando o que importa é saber se algo existe, não onde está.
emails = {"a@x.com", "b@x.com", "a@x.com"}
print(emails) # {'a@x.com', 'b@x.com'} ← duplicata sumiu
# Também pode criar a partir de uma lista
lista = ["a@x.com", "b@x.com", "a@x.com"]
emails = set(lista)
print(emails) # {'a@x.com', 'b@x.com'} ← mesmo resultado
emails.add("c@x.com")
print("a@x.com" in emails) # True (busca muito rápida)
Quando usar cada um
- Lista — coleção ordenada que pode mudar: carrinho de compras, histórico de ações
- Tupla — dados fixos que não devem ser alterados: ponto geográfico, data de nascimento
- Dicionário — objeto com propriedades nomeadas: usuário, produto, configuração
- Set — valores únicos, verificação de existência: emails cadastrados, tags de um post
Desafio rápido
- Crie uma lista com 5 números e use um loop para imprimir só os pares.
- Crie um dicionário representando um produto com nome, preço e estoque. Imprima cada campo com f-string.
- Dada a lista
["ana", "bob", "ana", "carol", "bob"], use um set para descobrir quantos nomes únicos existem.
Próximos passos
Agora que você sabe organizar dados, o próximo passo é organizar o código — e é exatamente isso que Programação Orientada a Objetos resolve. Te vejo no próximo tutorial.