Voeg waarden toe aan een set in Python

Ik heb een set als deze:

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

Hoe voeg ik waarden [0,1,2,3,4,5,6,7,8,9,10]toe aan deze set?


Antwoord 1, autoriteit 100%

keep.update(yoursequenceofvalues)

bijv. keep.update(xrange(11))voor uw specifieke voorbeeld. Of, als u moetde waarden om een andere reden in een lus produceren,

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

Maar natuurlijk is het in bulk doen met een enkele .update-aanroep sneller en handiger, als dat anders mogelijk is.


Antwoord 2, autoriteit 75%

Definieer set

a = set()

Gebruik toevoegen om enkele waarden toe te voegen

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

Gebruik update om elementen uit tuples, sets, lijsten of bevroren sets toe te voegen

a.update([3,4])
>> print(a)
{1, 2, 3, 4}

Als je zelf een tuple of frozen-set wilt toevoegen, gebruik dan add

a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}

Opmerking: aangezien set-elementen hashbaar moeten zijn en lijsten als veranderlijk worden beschouwd, kunt u geen lijst aan een set toevoegen. U kunt ook geen andere sets aan een set toevoegen. U kunt echter de elementen uit lijsten en sets toevoegen, zoals aangetoond met de “.update”-methode.


Antwoord 3, autoriteit 27%

Je kunt ook de operator |gebruiken om twee sets samen te voegen (unionin de verzamelingenleer):

>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}

Of een kortere vorm met |=:

>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}

Opmerking:Gebruik in versies vóór Python 2.7 set([...])in plaats van {...}.


Antwoord 4, autoriteit 10%

Gebruik updateals volgt:

keep.update(newvalues)

Antwoord 5, autoriteit 3%

Deze vraag is de eerste die op Google verschijnt als je ‘Python hoe elementen aan een set toe te voegen’ opzoekt, dus het is de moeite waard om expliciet op te merken dat als je een hele string aan een set wilt toevoegen, dit moet zijn toegevoegd met .add(), niet .update().

Stel dat je een string foo_strhebt waarvan de inhoud 'this is a sentence'is, en dat je een set bar_sethebt die gelijk is aan set().

Als je dat doet
bar_set.update(foo_str), de inhoud van je set is {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}.

Als je bar_set.add(foo_str)doet, is de inhoud van je set {'this is a sentence'}.


Antwoord 6

De manier waarop ik dit graag doe, is door zowel de originele set als de waarden die ik wil toevoegen aan lijsten te converteren, ze toe te voegen en ze vervolgens weer om te zetten in een set, als volgt:

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'}

Op deze manier kan ik ook gemakkelijk meerdere sets toevoegen met dezelfde logica, wat me een TypeError: unhashable type: 'set'oplevert als ik het probeer met de .update()methode.


Antwoord 7

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

Of

keep.update(np.arange(11))

Antwoord 8

Voor mij werkt het in Python 3 eenvoudig op deze manier:

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

Ik weet niet of het juist is…

Other episodes