Juntar Sets em Python
Aprenda todas as formas de juntar sets em Python: union(), update(), os operadores | e |=, e métodos in-place para interseção, diferença e diferença simétrica.
Python oferece diversas formas de combinar dois ou mais sets em uma única coleção. Esta página abrange todas elas — o método union(), o método update(), seus atalhos com operadores (| e |=), como juntar mais de dois sets de uma vez, e os métodos in-place relacionados para interseção, diferença e diferença simétrica.
Comparação Rápida
| Objetivo | Método | Operador | Modifica o original? |
|---|---|---|---|
| Novo set com todos os elementos | union() | | | Não — retorna novo set |
| Adiciona todos os elementos no lugar | update() | |= | Sim |
| Novo set — apenas elementos comuns | intersection() | & | Não |
| Mantém apenas elementos comuns | intersection_update() | &= | Sim |
| Novo set — elementos que não estão no outro | difference() | - | Não |
| Remove elementos encontrados no outro | difference_update() | -= | Sim |
| Novo set — elementos em um, mas não em ambos | symmetric_difference() | ^ | Não |
| Mantém elementos em um, mas não em ambos | symmetric_difference_update() | ^= | Sim |
Juntando Sets com union()
union() retorna um novo set contendo todos os elementos únicos de todos os sets passados. Os sets originais não são alterados.
Unir dois sets em Python
Saída (a ordem pode variar — sets não têm ordem):
{'apple', 'banana', 'cherry', 'mango', 'orange'}Como set2 já contém "banana", o resultado o inclui apenas uma vez. Essa é a propriedade fundamental de um set: sem duplicatas.
O Operador |
O pipe | é o equivalente operador de union(). Produz o mesmo resultado e costuma ser mais legível em expressões.
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set3 = set1 | set2
print(set3)Saída:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Quando usar | vs union(): use | para uma expressão rápida e legível entre dois sets. Use union() quando precisar passar qualquer outro iterável (como uma lista ou tupla) diretamente — union() aceita qualquer iterável, enquanto | exige que ambos os operandos sejam sets.
# union() accepts any iterable
set1 = {1, 2, 3}
result = set1.union([4, 5], (6,)) # list and tuple both work
print(result)Saída:
{1, 2, 3, 4, 5, 6}Juntando Sets com update()
update() adiciona todos os elementos de um ou mais outros sets (ou qualquer iterável) no set existente. Ele modifica o set original no lugar e retorna None.
Atualizar um set com outro set em Python
Saída:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Após essa chamada, set1 cresceu para incluir todos os elementos únicos de set2. O próprio set2 permanece inalterado.
O Operador |=
|= é o equivalente in-place de update().
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set1 |= set2
print(set1)Saída:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Juntando Mais de Dois Sets de Uma Vez
Tanto union() quanto update() aceitam múltiplos argumentos, portanto você pode combinar vários sets em uma única chamada.
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
result = A.union(B, C)
print(result)Saída:
{1, 2, 3, 4, 5, 6, 7}O mesmo se aplica a update():
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
A.update(B, C)
print(A)Saída:
{1, 2, 3, 4, 5, 6, 7}Você também pode encadear o operador | em vários sets:
result = {1, 2} | {3, 4} | {5, 6}
print(result)Saída:
{1, 2, 3, 4, 5, 6}Métodos In-Place Relacionados
O mesmo padrão de in-place vs. novo set se aplica a todas as outras operações de set. Vale a pena conhecê-los junto com update().
intersection_update() e &=
Mantém apenas os elementos que aparecem em todos os sets especificados.
A = {1, 2, 3, 4}
B = {2, 3, 5}
A.intersection_update(B)
print(A) # only elements in both A and BSaída:
{2, 3}difference_update() e -=
Remove todos os elementos que também aparecem no outro set.
A = {1, 2, 3, 4}
B = {2, 4}
A.difference_update(B)
print(A) # elements in A that are not in BSaída:
{1, 3}symmetric_difference_update() e ^=
Mantém apenas os elementos que aparecem em exatamente um dos dois sets — os elementos compartilhados por ambos são descartados.
A = {1, 2, 3}
B = {2, 3, 4}
A.symmetric_difference_update(B)
print(A) # elements in A or B, but not in bothSaída:
{1, 4}union() vs update() — Qual Usar?
Use union() (ou |) quando quiser manter os sets originais intactos e trabalhar com o resultado combinado como um valor separado. É a escolha certa dentro de expressões, valores de retorno de funções e em qualquer situação onde a imutabilidade importa.
Use update() (ou |=) quando estiver construindo um set de forma incremental e não precisar preservar o original. Usa um pouco menos de memória porque não cria um objeto extra.
# Reading pattern: create a single combined set from several sources
all_tags = set()
for article in articles:
all_tags.update(article["tags"]) # update() is natural hereTópicos Relacionados
- Python Sets — o que são sets, como criá-los e suas propriedades principais
- Adicionar Itens ao Set — adicionar elementos únicos e em massa a um set
- Remover Itens do Set —
remove(),discard()epop() - Acessar Itens do Set — teste de pertencimento e iteração
- Iterar Sets — iterar sobre elementos de set com
for - Métodos de Set — referência completa de todos os métodos de set integrados