Aggiungere Elementi a un Set
Scopri come aggiungere elementi a un set Python con add() per un singolo valore e update() per più valori da qualsiasi iterabile, con esempi chiari.
I set di Python sono collezioni non ordinate di elementi unici. Una volta creato un set, puoi espanderlo in qualsiasi momento usando due metodi dedicati: add() per inserire un singolo elemento e update() per inserire più elementi contemporaneamente da qualsiasi iterabile. Questo capitolo tratta entrambi i metodi in profondità, spiega quando usare ciascuno e mette in evidenza i problemi più comuni.
Se sei nuovo ai set, leggi prima il capitolo Python Sets. Per imparare a rimuovere elementi, consulta Remove Set Items.
Il metodo add()
add() inserisce un elemento nel set. Se l'elemento esiste già, il set non viene modificato — non viene generato alcun errore e non viene creato alcun duplicato.
Sintassi
set.add(element)element— il valore da inserire. Deve essere hashable (string, numeri, tuple di valori hashable, ecc.). Liste e dizionari non possono essere aggiunti.- Valore restituito:
None. Il set viene modificato in-place.
Aggiungere un nuovo elemento
Aggiungere una string a un set
Aggiungere un duplicato è sicuro
Chiamare add() con un elemento già presente non fa nulla — il set rimane della stessa dimensione:
Aggiungere un elemento duplicato a un set
fruits = {'apple', 'banana', 'cherry'}
fruits.add('apple') # 'apple' is already present
print(fruits)
# {'apple', 'banana', 'cherry'} (unchanged)Questa è una delle proprietà più utili dei set: non devi mai verificare se un elemento esiste prima di aggiungerlo.
add() accetta un solo argomento
add() accetta esattamente un argomento. Per inserire più elementi contemporaneamente, usa invece update() (vedi la sezione successiva).
# This raises TypeError: set.add() takes exactly one argument (2 given)
# fruits.add('kiwi', 'mango')add() richiede un elemento hashable
Solo i tipi hashable possono essere memorizzati in un set. Le liste e i dizionari non sono hashable, quindi passarli a add() genera un 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)}Il metodo update()
update() aggiunge tutti gli elementi da uno o più iterabili al set in una sola chiamata. Accetta qualsiasi iterabile — un altro set, una lista, una tupla o persino una string.
Sintassi
set.update(iterable1, iterable2, ...)- È possibile passare uno o più iterabili.
- I duplicati tra il set esistente e i nuovi elementi vengono ignorati silenziosamente.
- Valore restituito:
None. Il set viene modificato in-place.
Aggiungere elementi da una lista
Aggiornare un set da una lista
fruits = {'apple', 'banana'}
fruits.update(['cherry', 'date', 'elderberry'])
print(fruits)
# {'apple', 'banana', 'cherry', 'date', 'elderberry'}Aggiungere elementi da un altro set
Unire due set con update()
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)
# {1, 2, 3, 4, 5}Nota che update() modifica set1 in-place, mentre union() restituisce un nuovo set senza toccare nessuno dei due originali.
Aggiungere da più iterabili contemporaneamente
Puoi passare più iterabili a una singola chiamata update():
Aggiornare un set da più iterabili
numbers = {1, 2, 3}
numbers.update([4, 5], {5, 6, 7})
print(numbers)
# {1, 2, 3, 4, 5, 6, 7}Passare una string a update()
Poiché una string è iterabile, update() la divide in singoli caratteri. Di solito non è quello che si vuole, quindi fai attenzione:
Aggiornare con una string — aggiunge i singoli caratteri
s = {'hello'}
s.update('abc')
print(s)
# {'hello', 'a', 'b', 'c'} — each character becomes a separate elementPer aggiungere un'intera string come unico elemento, usa invece add().
add() vs update() — Confronto rapido
add() | update() | |
|---|---|---|
| Numero di elementi | Uno | Molti |
| Tipo di argomento | Un singolo valore hashable | Qualsiasi iterabile (lista, set, tupla, …) |
| Modifica il set in-place? | Sì | Sì |
| Restituisce | None | None |
Esempi pratici
Costruire dinamicamente un set di tag
Un caso d'uso comune è raccogliere tag o identificatori univoci mentre un programma è in esecuzione:
Raccogliere tag univoci con un 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'}Rimuovere duplicati durante l'accumulo di dati
Poiché add() ignora silenziosamente i duplicati, puoi usare un set come accumulatore per deduplicare elementi provenienti da più sorgenti:
Deduplicare elementi da due liste usando un 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]Punti chiave
- I set memorizzano solo elementi unici;
add()eupdate()non creano mai duplicati. - I set sono non ordinati — l'ordine di inserimento non viene preservato e può variare tra le esecuzioni.
add()inserisce esattamente un elemento hashable;update()inserisce tutti gli elementi da qualsiasi numero di iterabili.- Entrambi i metodi restituiscono
Nonee modificano il set in-place. - Per combinare due set in un nuovo set senza modificarne nessuno, usa
union()(vedi Set Methods).