J'ai un ensemble comme celui-ci:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Comment ajouter des valeurs [0,1,2,3,4,5,6,7,8,9,10]
à cet ensemble?
J'ai un ensemble comme celui-ci:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Comment ajouter des valeurs [0,1,2,3,4,5,6,7,8,9,10]
à cet ensemble?
Réponses:
keep.update(yoursequenceofvalues)
par exemple, keep.update(xrange(11))
pour votre exemple spécifique. Ou, si vous devez produire les valeurs dans une boucle pour une autre raison,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Mais, bien sûr, le faire en masse avec un seul .update
appel est plus rapide et plus pratique, lorsque cela est possible.
.add
attend un seul type lavable, tout en .update
attend un objet itérable
.add
, non .update
, j'ai récemment fait face à un bug assez sournois à cause de ce petit détail.
Définir l'ensemble
a = set()
Utilisez ajouter pour ajouter des valeurs uniques
a.add(1)
a.add(2)
Utilisez la mise à jour pour ajouter des éléments à partir de tuples, d'ensembles, de listes ou d'ensembles figés
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Si vous souhaitez ajouter un tuple ou un ensemble figé, utilisez add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Remarque: Étant donné que les éléments d'ensemble doivent être lavables et que les listes sont considérées comme modifiables, vous ne pouvez pas ajouter de liste à un ensemble. Vous ne pouvez pas non plus ajouter d'autres ensembles à un ensemble. Vous pouvez cependant ajouter les éléments des listes et des ensembles comme illustré avec la méthode ".update".
Vous pouvez également utiliser l' |
opérateur pour concaténer deux ensembles ( union dans la théorie des ensembles):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Ou un formulaire plus court utilisant |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Remarque: dans les versions antérieures à Python 2.7, utilisez set([...])
plutôt que {...}
.
my_sets
, alors vous pouvez les big_set = my_sets[0].union(*my_sets[1:])
combiner tous
Cette question est la première qui apparaît sur Google lorsque l'on recherche "Python comment ajouter des éléments à un ensemble", il convient donc de noter explicitement que si vous souhaitez ajouter une chaîne entière à un ensemble, elle doit être ajoutée avec .add()
, non .update()
.
Disons que vous avez une chaîne foo_str
dont le contenu est 'this is a sentence'
, et que vous en avez un ensemble bar_set
égal àset()
.
Si vous le faites
bar_set.update(foo_str)
, le contenu de votre ensemble sera {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Si vous le faites bar_set.add(foo_str)
, le contenu de votre ensemble sera {'this is a sentence'}
.
La façon dont j'aime faire cela est de convertir à la fois l'ensemble d'origine et les valeurs que j'aimerais ajouter dans des listes, de les ajouter, puis de les reconvertir en un ensemble, comme ceci:
setMenu = {"Eggs", "Bacon"}
print(setMenu)
> {'Bacon', 'Eggs'}
setMenu = set(list(setMenu) + list({"Spam"}))
print(setMenu)
> {'Bacon', 'Spam', 'Eggs'}
setAdditions = {"Lobster", "Sausage"}
setMenu = set(list(setMenu) + list(setAdditions))
print(setMenu)
> {'Lobster', 'Spam', 'Eggs', 'Sausage', 'Bacon'}
De cette façon, je peux également ajouter facilement plusieurs ensembles en utilisant la même logique, ce qui m'obtient TypeError: unhashable type: 'set'
si j'essaie de le faire avec la .update()
méthode.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Ou
keep.update(np.arange(11))
.add
ajoute un seul élément,.update
ajoute plusieurs éléments. Est-ce exact?