web-dev-qa-db-fra.com

Ajouter des valeurs à un ensemble en Python

J'ai un set comme ça:

keep = set(generic_drugs_mapping[drug] for drug in drug_input)

Comment ajouter les valeurs [0,1,2,3,4,5,6,7,8,9,10] dans cet ensemble?

keep.update(yoursequenceofvalues)

par exemple, keep.update(xrange(11)) pour votre exemple spécifique. Ou, si vous devez pour produire les valeurs dans une boucle pour une autre raison,

for ...whatever...:
  onemorevalue = ...whatever...
  keep.add(onemorevalue)

Mais bien sûr, le faire en bloc avec un seul appel .update est plus rapide et plus pratique, lorsque cela est possible.

331
Alex Martelli

Définir l'ensemble

a = set()

Utilisez add pour ajouter des valeurs uniques

a.add(1)
a.add(2)

Utilisez update pour ajouter des valeurs itérables

a.update([3,4])

Vérifiez votre collection

a
Out[*n*]: {1, 2, 3, 4}

C'est ça - rappelez-vous, update si c'est itérable (liste ou tuple) ou add sinon. Bonne codage!

215
RandallShanePhD

Vous pouvez également utiliser l'opérateur | pour concaténer deux ensembles ( union in in set theory):

>>> 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([...]) au lieu de {...}.

87
nyuszika7h

Utilisez update comme ceci:

keep.update(newvalues)
38
sberry

Cette question est la première qui apparaît sur Google lorsque vous recherchez "Python comment ajouter des éléments à définir", il est donc intéressant de noter que, si vous souhaitez ajouter une chaîne entière à un ensemble, il convient de l'ajouter avec .add() , pas .update().

Supposons que vous ayez une chaîne foo_str dont le contenu est 'this is a sentence' et que vous ayez 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 faites bar_set.add(foo_str), le contenu de votre ensemble sera {'this is a sentence'}.

7
lalilulelost
keep.update((0,1,2,3,4,5,6,7,8,9,10))

Ou

keep.update(np.arange(11))
1
rishi jain

Pour moi, en Python 3, cela fonctionne simplement de la manière suivante:

keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))

Je ne sais pas si c'est peut-être correct ...

0
decadenza

J'aime utiliser cette méthode pour convertir l'ensemble d'origine et les valeurs que je souhaite ajouter aux listes, les ajouter, puis 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 aussi facilement ajouter plusieurs ensembles en utilisant la même logique, ce qui me donne un TypeError: unhashable type: 'set' si j'essaie de le faire avec la méthode .update().

0
Kira Resari