Mam taki zestaw:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Jak dodać wartości [0,1,2,3,4,5,6,7,8,9,10]
do tego zestawu?
Mam taki zestaw:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Jak dodać wartości [0,1,2,3,4,5,6,7,8,9,10]
do tego zestawu?
Odpowiedzi:
keep.update(yoursequenceofvalues)
np. keep.update(xrange(11))
dla twojego konkretnego przykładu. Albo, jeśli masz do wytworzenia wartości w pętli z jakiegoś innego powodu,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Ale oczywiście robienie tego zbiorczo za pomocą pojedynczego .update
połączenia jest szybsze i wygodniejsze, jeśli jest to wykonalne w inny sposób.
.add
oczekuje pojedynczego typu skrótu, podczas gdy .update
oczekuje obiektu iterowalnego
.add
, a nie .update
, ostatnio spotkałem się z dość podstępnym błędem z powodu tego małego szczegółu.
Zdefiniuj zestaw
a = set()
Użyj add, aby dołączyć pojedyncze wartości
a.add(1)
a.add(2)
Użyj aktualizacji, aby dodać elementy z krotek, zestawów, list lub zestawów zamrożonych
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Jeśli chcesz dodać krotkę lub sam zestaw zamrożony, użyj add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Uwaga: Ponieważ elementy zestawu muszą być haszowalne, a listy są uważane za zmienne, nie można dodać listy do zestawu. Nie można również dodawać innych zestawów do zestawu. Można jednak dodawać elementy z list i zestawów, jak pokazano za pomocą metody „.update”.
Możesz także użyć |
operatora do połączenia dwóch zbiorów ( połączenie w teorii zbiorów):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Lub krótszy formularz przy użyciu |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Uwaga: W wersjach wcześniejszych niż Python 2.7 użyj set([...])
zamiast {...}
.
my_sets
, możesz big_set = my_sets[0].union(*my_sets[1:])
połączyć je wszystkie
To pytanie jest pierwszym, które pojawia się w Google, gdy szuka się „Pythona, jak dodawać elementy do zestawu”, dlatego warto wyraźnie zaznaczyć, że jeśli chcesz dodać cały ciąg do zestawu, należy dodać .add()
: nie .update()
.
Załóżmy, że masz ciąg znaków, foo_str
którego zawartość jest 'this is a sentence'
, i masz zestaw bar_set
równy set()
.
Jeśli to zrobisz
bar_set.update(foo_str)
, zawartość Twojego zestawu będzie {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Jeśli to zrobisz bar_set.add(foo_str)
, zawartość Twojego zestawu będzie {'this is a sentence'}
.
Lubię to przekonwertować zarówno oryginalny zestaw, jak i wartości, które chciałbym dodać do list, dodać je, a następnie przekonwertować z powrotem na zestaw, jak poniżej:
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'}
W ten sposób mogę również łatwo dodawać wiele zestawów przy użyciu tej samej logiki, co daje TypeError: unhashable type: 'set'
mi i próbę zrobienia tego za pomocą .update()
metody.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Lub
keep.update(np.arange(11))
.add
dodaje jeden element,.update
dodaje kilka elementów. Czy to jest poprawne?