web-dev-qa-db-de.com

Werte an einen Satz in Python anhängen

Ich habe so ein Set:

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

Wie füge ich diesem Set Werte [0,1,2,3,4,5,6,7,8,9,10] hinzu?

keep.update(yoursequenceofvalues)

b. keep.update(xrange(11)) für Ihr spezielles Beispiel. Oder wenn Sie haben , um die Werte aus einem anderen Grund in einer Schleife zu erzeugen,

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

Natürlich ist die Massenbearbeitung mit einem einzigen .update-Aufruf schneller und handlicher, wenn dies ansonsten möglich ist.

331
Alex Martelli

Set definieren

a = set()

Mit add können Sie einzelne Werte anhängen

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

Verwenden Sie update, um iterierbare Werte anzufügen

a.update([3,4])

Überprüfen Sie Ihre Sammlung

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

Das ist es - denken Sie daran, update, falls es iterierbar ist (aka list oder Tuple), oder add, falls nicht. Viel Spaß beim Codieren!

215
RandallShanePhD

Sie können den Operator | auch verwenden, um zwei Mengen zu verketten ( union in Mengenlehre):

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

Oder ein kürzeres Formular mit |=:

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

Hinweis: Verwenden Sie in Versionen vor Python 2.7 set([...]) anstelle von {...}.

87
nyuszika7h

Verwenden Sie update wie folgt:

keep.update(newvalues)
38
sberry

Diese Frage ist die erste, die bei Google angezeigt wird, wenn nach "Python, wie Elemente zu einer Gruppe hinzugefügt werden" gesucht wird. Wenn Sie also einer Gruppe eine ganze Zeichenfolge hinzufügen möchten, sollten Sie sie mit .add(), nicht .update().

Angenommen, Sie haben eine Zeichenfolge foo_str, Deren Inhalt 'this is a sentence' Ist, und Sie haben eine Menge bar_set Gleich set().

Wenn Sie bar_set.update(foo_str) ausführen, lautet der Inhalt Ihres Sets {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}.

Wenn Sie bar_set.add(foo_str) ausführen, lautet der Inhalt Ihres Sets {'this is a sentence'}.

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

Oder

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

Für mich in Python 3 funktioniert das einfach auf diese Weise:

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

Ich weiß nicht, ob es richtig ist ...

0
decadenza

Dazu konvertiere ich sowohl die ursprüngliche Menge als auch die Werte, die ich hinzufügen möchte, in Listen, füge sie hinzu und konvertiere sie dann wieder in eine Menge, wie folgt:

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

Auf diese Weise kann ich auch problemlos mehrere Mengen mit derselben Logik hinzufügen, wodurch ich einen TypeError: unhashable type: 'set' erhalte, wenn ich es mit der .update() -Methode versuche.

0
Kira Resari