W3docs

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

ObjetivoMétodoOperadorModifica o original?
Novo set com todos os elementosunion()|Não — retorna novo set
Adiciona todos os elementos no lugarupdate()|=Sim
Novo set — apenas elementos comunsintersection()&Não
Mantém apenas elementos comunsintersection_update()&=Sim
Novo set — elementos que não estão no outrodifference()-Não
Remove elementos encontrados no outrodifference_update()-=Sim
Novo set — elementos em um, mas não em ambossymmetric_difference()^Não
Mantém elementos em um, mas não em ambossymmetric_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

python— editable, runs on the server

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

python— editable, runs on the server

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 B

Saí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 B

Saí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 both

Saí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 here

Tópicos Relacionados

Prática

Prática
Which of the following statements about joining sets in Python are correct?
Which of the following statements about joining sets in Python are correct?
Was this page helpful?