Módulo 11 - Tuplas, dicionários e conjuntos

Conjuntos com set: sem ordem e sem repetição

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

O que você vai aprender

  • Criar conjuntos e entender as duas regras: sem ordem e sem repetição.
  • Eliminar duplicatas de uma lista em uma linha com set.
  • Usar o in do conjunto para verificar pertencimento com rapidez.
  • Cruzar dois grupos com união e interseção em problemas reais.

As duas regras do conjunto

Falta uma peça na sua caixa de coleções, e ela é especialista. O conjunto, chamado de set no Python, abre mão de duas coisas que a lista tem, ordem e repetição, para ficar imbatível em uma pergunta: este item está aqui, sim ou não? Ele usa chaves { } como o dicionário, mas com itens soltos em vez de pares. E as duas regras dele aparecem no primeiro print.

numeros = {3, 1, 2, 3, 1}

print(numeros)
print(len(numeros))

# Saída:
# {1, 2, 3}
# 3
# As repetições sumiram e a ordem exibida não é a da digitação.

Cinco itens digitados, três guardados: o conjunto descartou as cópias sozinho, sem erro.

Repare que o Python não reclamou das repetições: descartou em silêncio e seguiu em frente, porque para o conjunto o 3 estar presente uma ou dez vezes dá no mesmo. E a ordem de exibição não é a ordem em que você digitou; o conjunto se organiza internamente do jeito que for mais eficiente para buscar. Se a ordem importa no seu problema, o conjunto não é a estrutura certa, e está tudo bem: cada coleção tem a sua vocação.

Duplicatas fora, em uma linha

O uso mais frequente do conjunto no dia a dia é faxina: tirar valores repetidos de uma lista. Sem ele, você precisaria de um for com if e uma lista auxiliar, umas cinco linhas de lógica. Com ele, a limpeza é uma chamada de função: set(minha_lista) cria um conjunto só com os valores únicos. Veja num caso realista, uma lista de e-mails de inscrição com gente que se inscreveu duas vezes.

inscricoes = [
    "ana@email.com",
    "bruno@email.com",
    "ana@email.com",
    "carla@email.com",
    "bruno@email.com",
]

unicos = set(inscricoes)

print(f"Inscrições recebidas: {len(inscricoes)}")
print(f"Pessoas diferentes: {len(unicos)}")

# Saída:
# Inscrições recebidas: 5
# Pessoas diferentes: 3

Cinco inscrições, três pessoas: o set responde na hora quantos valores únicos existem.

Se você precisar do resultado de volta como lista, para ordenar ou indexar, o caminho de ida e volta é list(set(inscricoes)). Só lembre do preço: a ordem original se perde na viagem, porque o conjunto não a guarda. Para contar valores únicos ou verificar presença, isso não importa nada; para exibir na ordem de chegada, importa, e aí a solução é outra.

A segunda especialidade é a velocidade do in. Numa lista, o Python verifica item por item até achar, do começo ao fim; com dez mil itens, são até dez mil comparações. No conjunto, a organização interna permite responder quase de imediato, sem varrer nada, com dez itens ou com um milhão. Para os programas deste curso a diferença não pesa, mas conhecer a ferramenta certa agora evita programas lentos lá na frente.

União e interseção: cruzando dois grupos

A terceira especialidade vem da matemática dos conjuntos que você viu na escola: operações entre grupos. Imagine dois cursos do portal, cada um com a sua turma. Quantas pessoas diferentes estudam aqui? É a união, escrita com a barra vertical |. Quem faz os dois cursos ao mesmo tempo? É a interseção, escrita com o &. Perguntas que exigiriam laços e ifs viram um operador.

turma_python = {"Ana", "Bruno", "Carla", "Duda"}
turma_lgpd = {"Bruno", "Duda", "Elisa"}

todos = turma_python | turma_lgpd
nos_dois = turma_python & turma_lgpd

print(f"Alunos no portal: {len(todos)}")
print(f"Fazem os dois cursos: {nos_dois}")

# Saída:
# Alunos no portal: 5
# Fazem os dois cursos: {'Bruno', 'Duda'}

União com | e interseção com &: duas perguntas de negócio respondidas em duas linhas.

Leia o resultado com atenção: a união tem 5 nomes, não 7, porque Bruno e Duda aparecem nas duas turmas e o conjunto conta cada pessoa uma vez. É exatamente o comportamento que a pergunta pedia, quantas pessoas DIFERENTES, e é por isso que o conjunto é a estrutura certa aqui. Existe ainda a diferença, com o sinal de menos: turma_python - turma_lgpd devolve quem faz só Python, útil para responder quem ainda não conhece o outro curso.

Com o set, a sua caixa de coleções está completa: lista para sequências que mudam, tupla para registros fixos, dicionário para valores com nome e conjunto para itens únicos. A prática da próxima aula usa as peças em conjunto num programa de verdade, e a tabela de escolha rápida abre a aula para consulta.

Teste rápido

O que o Python guarda ao executar set([1, 2, 2, 3, 3, 3])?

Perguntas frequentes

Por que a ordem do meu set sai diferente da que eu digitei?
Porque o conjunto não se compromete com ordem nenhuma: ele organiza os itens internamente do jeito mais eficiente para busca. Essa é a troca que ele faz: abre mão da ordem para responder o in quase de imediato. Se a ordem importa, use lista.
Como crio um conjunto vazio?
Com set(), a função sem argumentos. A armadilha clássica é escrever {}, que cria um dicionário vazio, já que as chaves { } servem para os dois. Vale rodar type({}) e type(set()) no Playground uma vez para nunca mais confundir.
Conjunto aceita qualquer tipo de item?
Aceita itens imutáveis: números, textos, booleanos e tuplas. Lista e dicionário não podem entrar num set, pela mesma razão que não podem ser chave de dicionário: são mutáveis. Se tentar, o Python responde com TypeError apontando o item do problema.
Como adiciono e removo itens de um conjunto?
Com os métodos add e remove: convidados.add("Elisa") inclui, convidados.remove("Elisa") tira. O add de um item que já existe não faz nada, sem erro. O remove de quem não existe gera KeyError; o método discard faz a mesma remoção sem reclamar da ausência.
Qual a diferença entre a união com | e somar duas listas?
Somar listas com + junta tudo, repetições incluídas: [1, 2] + [2, 3] dá [1, 2, 2, 3]. A união de conjuntos conta cada valor uma vez: {1, 2} | {2, 3} dá {1, 2, 3}. Se a pergunta é quantos diferentes, o conjunto responde certo; a soma de listas, não.
Vou usar set no projeto final?
O gerenciador de tarefas usa mais lista e dicionário, porque a ordem das tarefas importa. O set entra na sua vida quando aparecerem perguntas de unicidade e cruzamento: e-mails duplicados, itens em comum entre dois grupos, presença rápida. Saber que ele existe evita reinventar essa roda com for e if.

Fontes

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