Ich habe ein Set wie dieses:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Wie füge ich [0,1,2,3,4,5,6,7,8,9,10]
diesem Satz Werte hinzu ?
Ich habe ein Set wie dieses:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Wie füge ich [0,1,2,3,4,5,6,7,8,9,10]
diesem Satz Werte hinzu ?
Antworten:
keep.update(yoursequenceofvalues)
zB keep.update(xrange(11))
für Ihr spezifisches Beispiel. Oder, wenn Sie haben die Werte in einer Schleife aus einem anderen Grunde zu produzieren,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Aber natürlich .update
ist es schneller und einfacher, es in großen Mengen mit einem einzigen Anruf zu erledigen, wenn dies sonst möglich ist.
.add
erwartet einen einzelnen Hash-Typ, während .update
erwartet ein iterierbares Objekt
.add
, nicht .update
, ich hatte kürzlich aufgrund dieses kleinen Details einen ziemlich hinterhältigen Fehler.
Set definieren
a = set()
Verwenden Sie add, um einzelne Werte anzuhängen
a.add(1)
a.add(2)
Verwenden Sie update, um Elemente aus Tupeln, Mengen, Listen oder eingefrorenen Mengen hinzuzufügen
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Wenn Sie ein Tupel oder ein Frozen-Set selbst hinzufügen möchten, verwenden Sie add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Hinweis: Da Mengenelemente hashbar sein müssen und Listen als veränderbar angesehen werden, können Sie einer Menge keine Liste hinzufügen. Sie können einem Satz auch keine anderen Sätze hinzufügen. Sie können jedoch die Elemente aus Listen und Sätzen hinzufügen, wie mit der Methode ".update" gezeigt.
Sie können den |
Operator auch verwenden , um zwei Mengen zu verketten ( Vereinigung in der Mengenlehre):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Oder eine kürzere Form mit |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Hinweis: Verwenden Sie in Versionen vor Python 2.7 set([...])
anstelle von {...}
.
my_sets
, können Sie big_set = my_sets[0].union(*my_sets[1:])
sie alle kombinieren
Diese Frage ist die erste, die bei Google angezeigt wird, wenn "Python zum Hinzufügen von Elementen zum Set" nachgeschlagen wird. Wenn Sie also einem Set einen ganzen String hinzufügen möchten, sollten Sie Folgendes hinzufügen .add()
: nicht .update()
.
Angenommen, Sie haben eine Zeichenfolge, foo_str
deren Inhalt ist 'this is a sentence'
, und Sie haben eine Menge bar_set
gleich set()
.
Wenn Sie dies tun
bar_set.update(foo_str)
, wird der Inhalt Ihres Sets sein {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Wenn Sie dies tun bar_set.add(foo_str)
, wird der Inhalt Ihres Sets sein {'this is a sentence'}
.
Ich möchte dies tun, indem ich sowohl den ursprünglichen Satz als auch die Werte, die ich hinzufügen möchte, in Listen konvertiere, sie hinzufüge und sie dann wieder in einen Satz konvertiere, 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 Sätze mit derselben Logik hinzufügen. TypeError: unhashable type: 'set'
Wenn ich es mit der .update()
Methode versuche , bekomme ich eine .
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Oder
keep.update(np.arange(11))
.add
fügt ein einzelnes Element.update
hinzu , fügt mehrere Elemente hinzu. Ist das korrekt?