Tengo un conjunto como este:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
¿Cómo agrego valores [0,1,2,3,4,5,6,7,8,9,10]
a este conjunto?
keep.update(yoursequenceofvalues)
Por ejemplo, keep.update(xrange(11))
para su ejemplo específico. O, si tiene que producir los valores en un bucle por alguna otra razón,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Pero, por supuesto, hacerlo de forma masiva con una sola .update
llamada es más rápido y práctico, cuando es factible.
.add
agrega un solo elemento,.update
agrega varios elementos. ¿Es eso correcto?.add
espera un solo tipo hashable, mientras.update
espera un objeto iterable.add
, no.update
, recientemente me enfrenté a un error bastante furtivo debido a este pequeño detalle.Definir conjunto
Use agregar para agregar valores individuales
Use la actualización para agregar elementos de tuplas, conjuntos, listas o conjuntos congelados
Si desea agregar una tupla o un conjunto congelado, use agregar
Nota: Dado que los elementos del conjunto deben ser hashable y las listas se consideran mutables, no puede agregar una lista a un conjunto. Tampoco puede agregar otros conjuntos a un conjunto. Sin embargo, puede agregar los elementos de listas y conjuntos como se demuestra con el método ".update".
fuente
También puede usar el
|
operador para concatenar dos conjuntos ( unión en teoría de conjuntos):O una forma más corta usando
|=
:Nota: En versiones anteriores a Python 2.7, use en
set([...])
lugar de{...}
.fuente
my_sets
, entonces puede hacerbig_set = my_sets[0].union(*my_sets[1:])
para combinarlos todosUsar
update
así:fuente
Esta pregunta es la primera que aparece en Google cuando se busca "Python cómo agregar elementos para establecer", por lo que vale la pena señalar explícitamente que, si desea agregar una cadena completa a un conjunto, debe agregarse con
.add()
, no.update()
.Digamos que tiene una cadena
foo_str
cuyo contenido es'this is a sentence'
, y tiene un conjuntobar_set
igual aset()
.Si lo hace
bar_set.update(foo_str)
, el contenido de su conjunto será{'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.Si lo hace
bar_set.add(foo_str)
, el contenido de su conjunto será{'this is a sentence'}
.fuente
La forma en que me gusta hacer esto es convertir tanto el conjunto original como los valores que me gustaría agregar a las listas, agregarlos y luego volver a convertirlos en un conjunto, así:
De esta manera, también puedo agregar fácilmente múltiples conjuntos usando la misma lógica, lo que me da un resultado
TypeError: unhashable type: 'set'
si trato de hacerlo con el.update()
método.fuente
O
fuente
Para mí, en Python 3, funciona simplemente de esta manera:
No sé si puede ser correcto ...
fuente