Ho un set come questo:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Come faccio ad aggiungere valori [0,1,2,3,4,5,6,7,8,9,10]
in questo set?
Ho un set come questo:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Come faccio ad aggiungere valori [0,1,2,3,4,5,6,7,8,9,10]
in questo set?
Risposte:
keep.update(yoursequenceofvalues)
ad esempio, keep.update(xrange(11))
per il tuo esempio specifico. Oppure, se si dispone per produrre i valori in un ciclo per qualche altro motivo,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Ma, naturalmente, farlo alla rinfusa con una sola .update
chiamata è più veloce e più maneggevole, quando altrimenti fattibile.
.add
aspetta un solo tipo hash, mentre si .update
aspetta un oggetto iterabile
.add
, non .update
, di recente ho dovuto affrontare un bug piuttosto subdolo a causa di questo piccolo dettaglio.
Definisci set
a = set()
Usa aggiungi per aggiungere singoli valori
a.add(1)
a.add(2)
Usa aggiornamento per aggiungere elementi da tuple, set, elenchi o set congelati
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Se si desidera aggiungere una tupla o un set congelato, utilizzare Aggiungi
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Nota: poiché gli elementi del set devono essere hash e gli elenchi sono considerati mutabili, non è possibile aggiungere un elenco a un set. Inoltre, non è possibile aggiungere altri set a un set. Tuttavia, è possibile aggiungere elementi dagli elenchi e dai set come dimostrato con il metodo ".update".
Puoi anche usare l' |
operatore per concatenare due insiemi ( unione nella teoria degli insiemi):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
O una forma più breve usando |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Nota: nelle versioni precedenti a Python 2.7, utilizzare set([...])
invece di {...}
.
my_sets
, allora puoi fare big_set = my_sets[0].union(*my_sets[1:])
per combinarli tutti
Questa è la prima domanda che compare su Google quando si cerca "Python come aggiungere elementi al set", quindi vale la pena notare esplicitamente che, se si desidera aggiungere un'intera stringa a un set, è necessario aggiungerlo con .add()
, no .update()
.
Supponi di avere una stringa il foo_str
cui contenuto è 'this is a sentence'
e ne hai un set bar_set
uguale a set()
.
Se lo fai
bar_set.update(foo_str)
, i contenuti del tuo set saranno {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Se lo fai bar_set.add(foo_str)
, i contenuti del tuo set saranno {'this is a sentence'}
.
Il modo in cui mi piace fare questo è convertire sia il set originale che i valori che vorrei aggiungere in elenchi, aggiungerli e quindi riconvertirli in un set, in questo modo:
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'}
In questo modo posso anche aggiungere facilmente più set usando la stessa logica, il che mi TypeError: unhashable type: 'set'
dà un se provo a farlo con il .update()
metodo.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
O
keep.update(np.arange(11))
.add
aggiunge un singolo elemento,.update
aggiunge diversi elementi. È corretto?