Eu tenho um conjunto como este:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Como adiciono valores [0,1,2,3,4,5,6,7,8,9,10]
a este conjunto?
keep.update(yoursequenceofvalues)
por exemplo, keep.update(xrange(11))
para o seu exemplo específico. Ou, se você precisar produzir os valores em um loop por algum outro motivo,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Mas, é claro, fazer isso em massa com uma única .update
chamada é mais rápido e prático, quando possível.
.add
adiciona um único item,.update
adiciona vários itens. Isso está correto?.add
espera que um único tipo Hashable, enquanto.update
espera um objeto iterável.add
, e não.update
recentemente, eu enfrentei um bug bastante sorrateiro por causa desses pequenos detalhes.Definir conjunto
Use add para acrescentar valores únicos
Use update para adicionar elementos de tuplas, conjuntos, listas ou conjuntos congelados
Se você deseja adicionar uma tupla ou um conjunto congelado, use add
Nota: Como os elementos do conjunto devem ser laváveis e as listas são consideradas mutáveis, você não pode adicionar uma lista a um conjunto. Você também não pode adicionar outros conjuntos a um conjunto. No entanto, você pode adicionar os elementos de listas e conjuntos, conforme demonstrado com o método ".update".
fonte
Você também pode usar o
|
operador para concatenar dois conjuntos ( união na teoria dos conjuntos):Ou um formulário mais curto usando
|=
:Nota: Nas versões anteriores ao Python 2.7, use em
set([...])
vez de{...}
.fonte
my_sets
, então você pode fazerbig_set = my_sets[0].union(*my_sets[1:])
para combiná-los todosUse
update
assim:fonte
Esta pergunta é a primeira que aparece no Google quando se consulta "Python como adicionar elementos ao conjunto". Portanto, vale a pena observar explicitamente que, se você deseja adicionar uma string inteira a um conjunto, ela deve ser adicionada com
.add()
, não.update()
.Digamos que você tenha uma string
foo_str
cujo conteúdo seja'this is a sentence'
e tenha algum conjuntobar_set
igual aset()
.Se o fizer
bar_set.update(foo_str)
, o conteúdo do seu conjunto será{'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.Se o fizer
bar_set.add(foo_str)
, o conteúdo do seu conjunto será{'this is a sentence'}
.fonte
A maneira que eu gosto de fazer isso é converter o conjunto original e os valores que gostaria de adicionar em listas, adicioná-los e depois convertê-los novamente em um conjunto, como este:
Dessa forma, também posso adicionar facilmente vários conjuntos usando a mesma lógica, o que me leva a um erro
TypeError: unhashable type: 'set'
se tentar fazê-lo com o.update()
métodofonte
Ou
fonte
Para mim, no Python 3, está funcionando simplesmente desta maneira:
Não sei se pode estar correto ...
fonte