Adicionar Itens a um Set
Aprenda a adicionar itens a um set Python com add() para elementos únicos e update() para múltiplos valores de qualquer iterável, com exemplos claros.
Os sets em Python são coleções não ordenadas de elementos únicos. Após a criação de um set, é possível expandi-lo a qualquer momento usando dois métodos dedicados: add() para inserir um único elemento e update() para inserir vários elementos de uma só vez a partir de qualquer iterável. Este capítulo aborda ambos os métodos em profundidade, explica quando usar cada um e destaca erros comuns.
Se você ainda não conhece os sets, leia primeiro o capítulo Python Sets. Para aprender a remover itens, consulte Remove Set Items.
O Método add()
add() insere um elemento no set. Se o elemento já existir, o set não é alterado — nenhum erro é gerado e nenhuma duplicata é criada.
Sintaxe
set.add(element)element— o valor a ser inserido. Deve ser hashable (strings, números, tuplas de valores hashable, etc.). Listas e dicts não podem ser adicionados.- Valor de retorno:
None. O set é modificado no lugar.
Adicionando um novo elemento
Adicionar uma string a um set
Adicionar uma duplicata é seguro
Chamar add() com um elemento que já existe não faz nada — o set permanece com o mesmo tamanho:
Adicionar um elemento duplicado a um set
fruits = {'apple', 'banana', 'cherry'}
fruits.add('apple') # 'apple' is already present
print(fruits)
# {'apple', 'banana', 'cherry'} (unchanged)Essa é uma das propriedades mais úteis dos sets: você nunca precisa verificar se um elemento já existe antes de adicioná-lo.
add() aceita apenas um argumento
add() recebe exatamente um argumento. Para inserir vários elementos de uma só vez, use update() (veja a próxima seção).
# This raises TypeError: set.add() takes exactly one argument (2 given)
# fruits.add('kiwi', 'mango')add() requer um elemento hashable
Apenas tipos hashable podem ser armazenados em um set. Listas e dicionários não são hashable, portanto passá-los para add() gera um TypeError:
s = {1, 2, 3}
# s.add([4, 5]) # TypeError: unhashable type: 'list'
# Use a tuple instead:
s.add((4, 5))
print(s)
# {1, 2, 3, (4, 5)}O Método update()
update() adiciona todos os elementos de um ou mais iteráveis ao set em uma única chamada. Aceita qualquer iterável — outro set, uma lista, uma tupla ou até mesmo uma string.
Sintaxe
set.update(iterable1, iterable2, ...)- Um ou mais iteráveis podem ser passados.
- Duplicatas entre o set existente e os novos elementos são silenciosamente ignoradas.
- Valor de retorno:
None. O set é modificado no lugar.
Adicionando elementos de uma lista
Atualizar um set a partir de uma lista
fruits = {'apple', 'banana'}
fruits.update(['cherry', 'date', 'elderberry'])
print(fruits)
# {'apple', 'banana', 'cherry', 'date', 'elderberry'}Adicionando elementos de outro set
Mesclar dois sets com update()
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)
# {1, 2, 3, 4, 5}Note que update() modifica set1 no lugar, enquanto union() retorna um novo set sem alterar os originais.
Adicionando a partir de múltiplos iteráveis de uma só vez
Você pode passar vários iteráveis para uma única chamada de update():
Atualizar um set a partir de múltiplos iteráveis
numbers = {1, 2, 3}
numbers.update([4, 5], {5, 6, 7})
print(numbers)
# {1, 2, 3, 4, 5, 6, 7}Passando uma string para update()
Como uma string é iterável, update() a divide em caracteres individuais. Isso geralmente não é o que você deseja, portanto tome cuidado:
Atualizar com uma string — adiciona caracteres individuais
s = {'hello'}
s.update('abc')
print(s)
# {'hello', 'a', 'b', 'c'} — each character becomes a separate elementPara adicionar uma string inteira como um único elemento, use add().
add() vs update() — Comparação Rápida
add() | update() | |
|---|---|---|
| Número de elementos | Um | Muitos |
| Tipo do argumento | Um único valor hashable | Qualquer iterável (lista, set, tupla, …) |
| Modifica o set no lugar? | Sim | Sim |
| Retorna | None | None |
Exemplos Práticos
Construindo um set de tags dinamicamente
Um caso de uso comum é coletar tags ou identificadores únicos durante a execução do programa:
Coletar tags únicas com um set
tags = set()
# add() for one tag at a time
tags.add('python')
tags.add('tutorial')
tags.add('python') # duplicate — ignored
print(tags)
# {'python', 'tutorial'}
# update() to add several tags at once
tags.update(['coding', 'beginner', 'tutorial'])
print(tags)
# {'python', 'tutorial', 'coding', 'beginner'}Removendo duplicatas ao acumular dados
Como add() ignora silenciosamente as duplicatas, você pode usar um set como acumulador para eliminar itens duplicados de múltiplas fontes:
Eliminar duplicatas de duas listas usando um set
batch1 = [101, 102, 103, 102]
batch2 = [103, 104, 105]
seen = set()
seen.update(batch1)
seen.update(batch2)
print(sorted(seen))
# [101, 102, 103, 104, 105]Pontos-Chave
- Os sets armazenam apenas elementos únicos;
add()eupdate()nunca criam duplicatas. - Os sets são não ordenados — a ordem de inserção não é preservada e pode variar entre execuções.
add()insere exatamente um elemento hashable;update()insere todos os elementos de qualquer número de iteráveis.- Ambos os métodos retornam
Nonee mutam o set no lugar. - Para combinar dois sets em um novo set sem modificar nenhum deles, use
union()(veja Set Methods).