Iniciante 8 min de leitura 02/07/2026

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

  1. Crie uma lista com 5 números e use um loop para imprimir só os pares.
  2. Crie um dicionário representando um produto com nome, preço e estoque. Imprima cada campo com f-string.
  3. 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.