Ajouter des éléments à un ensemble
Apprenez à ajouter des éléments à un ensemble Python avec add() pour un seul élément et update() pour plusieurs valeurs depuis n'importe quel itérable, avec des exemples clairs.
Les ensembles Python sont des collections non ordonnées d'éléments uniques. Une fois un ensemble créé, vous pouvez l'agrandir à tout moment en utilisant deux méthodes dédiées : add() pour insérer un seul élément et update() pour insérer plusieurs éléments à la fois depuis n'importe quel itérable. Ce chapitre couvre les deux méthodes en profondeur, explique quand utiliser chacune d'elles et met en évidence les pièges courants.
Si vous débutez avec les ensembles, lisez d'abord le chapitre Python Sets. Pour apprendre à supprimer des éléments, consultez Remove Set Items.
La méthode add()
add() insère un élément dans l'ensemble. Si l'élément existe déjà, l'ensemble n'est pas modifié — aucune erreur n'est levée et aucun doublon n'est créé.
Syntaxe
set.add(element)element— la valeur à insérer. Elle doit être hachable (string, nombres, tuples de valeurs hachables, etc.). Les listes et les dicts ne peuvent pas être ajoutés.- Valeur de retour :
None. L'ensemble est modifié en place.
Ajouter un nouvel élément
Ajouter une string à un ensemble
Ajouter un doublon est sans risque
Appeler add() avec un élément qui existe déjà ne fait rien — l'ensemble reste de la même taille :
Ajouter un élément doublon à un ensemble
fruits = {'apple', 'banana', 'cherry'}
fruits.add('apple') # 'apple' is already present
print(fruits)
# {'apple', 'banana', 'cherry'} (unchanged)C'est l'une des propriétés les plus utiles des ensembles : vous n'avez jamais à vérifier si un élément existe avant de l'ajouter.
add() n'accepte qu'un seul argument
add() prend exactement un argument. Pour insérer plusieurs éléments à la fois, utilisez update() à la place (voir la section suivante).
# This raises TypeError: set.add() takes exactly one argument (2 given)
# fruits.add('kiwi', 'mango')add() exige un élément hachable
Seuls les types hachables peuvent être stockés dans un ensemble. Les listes et les dictionnaires ne sont pas hachables, donc les passer à add() lève une 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)}La méthode update()
update() ajoute tous les éléments d'un ou plusieurs itérables à l'ensemble en un seul appel. Elle accepte n'importe quel itérable — un autre ensemble, une liste, un tuple ou même une string.
Syntaxe
set.update(iterable1, iterable2, ...)- Un ou plusieurs itérables peuvent être passés.
- Les doublons entre l'ensemble existant et les nouveaux éléments sont silencieusement ignorés.
- Valeur de retour :
None. L'ensemble est modifié en place.
Ajouter des éléments depuis une liste
Mettre à jour un ensemble depuis une liste
fruits = {'apple', 'banana'}
fruits.update(['cherry', 'date', 'elderberry'])
print(fruits)
# {'apple', 'banana', 'cherry', 'date', 'elderberry'}Ajouter des éléments depuis un autre ensemble
Fusionner deux ensembles avec update()
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)
# {1, 2, 3, 4, 5}Notez que update() modifie set1 en place, tandis que union() retourne un nouvel ensemble sans toucher à l'un ou l'autre des originaux.
Ajouter depuis plusieurs itérables à la fois
Vous pouvez passer plusieurs itérables à un seul appel update() :
Mettre à jour un ensemble depuis plusieurs itérables
numbers = {1, 2, 3}
numbers.update([4, 5], {5, 6, 7})
print(numbers)
# {1, 2, 3, 4, 5, 6, 7}Passer une string à update()
Comme une string est itérable, update() la décompose en caractères individuels. Ce n'est généralement pas ce que vous souhaitez, alors soyez prudent :
Mise à jour avec une string — ajoute des caractères individuels
s = {'hello'}
s.update('abc')
print(s)
# {'hello', 'a', 'b', 'c'} — each character becomes a separate elementPour ajouter une string entière comme un seul élément, utilisez add() à la place.
add() vs update() — Comparaison rapide
add() | update() | |
|---|---|---|
| Nombre d'éléments | Un | Plusieurs |
| Type d'argument | Une seule valeur hachable | N'importe quel itérable (liste, ensemble, tuple, …) |
| Modifie l'ensemble en place ? | Oui | Oui |
| Retourne | None | None |
Exemples pratiques
Construire dynamiquement un ensemble de balises
Un cas d'usage courant consiste à collecter des balises ou des identifiants uniques au fil de l'exécution d'un programme :
Collecter des balises uniques avec un ensemble
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'}Supprimer les doublons tout en accumulant des données
Comme add() ignore silencieusement les doublons, vous pouvez utiliser un ensemble comme accumulateur pour dédupliquer des éléments provenant de plusieurs sources :
Dédupliquer des éléments de deux listes en utilisant un ensemble
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]Points clés
- Les ensembles ne stockent que des éléments uniques ;
add()etupdate()ne créent jamais de doublons. - Les ensembles sont non ordonnés — l'ordre d'insertion n'est pas préservé et peut varier d'une exécution à l'autre.
add()insère exactement un élément hachable ;update()insère tous les éléments depuis un nombre quelconque d'itérables.- Les deux méthodes retournent
Noneet modifient l'ensemble en place. - Pour combiner deux ensembles en un nouvel ensemble sans modifier l'un ou l'autre, utilisez
union()(voir Set Methods).