У меня есть такой набор:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Как добавить значения [0,1,2,3,4,5,6,7,8,9,10]
в этот набор?
У меня есть такой набор:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Как добавить значения [0,1,2,3,4,5,6,7,8,9,10]
в этот набор?
keep.update(yoursequenceofvalues)
например, keep.update(xrange(11))
для вашего конкретного примера. Или, если вам нужно произвести значения в цикле по какой-то другой причине,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Но, конечно же, делать это навалом с помощью одного вызова .update
быстрее и удобнее, если это возможно.
Определить набор
a = set()
Используйте add для добавления отдельных значений
a.add(1)
a.add(2)
Использовать обновление для добавления итеративных значений
a.update([3,4])
Проверьте свою коллекцию
a
Out[*n*]: {1, 2, 3, 4}
Что это - помните, обновите, если он итерируется (aka list или tuple) или добавьте, если нет. Счастливое кодирование!
Вы также можете использовать |
оператор для объединения двух множеств (объединение в теории множеств):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Или более короткую форму, используя |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Примечание. В версиях, предшествующих Python 2.7, используйте set([...])
вместо {...}
.
Используйте update
следующим образом:
keep.update(newvalues)
Этот вопрос является первым, который появляется в Google при поиске "Python, как добавлять элементы в набор", поэтому стоит отметить, что, если вы хотите добавить целую строку в набор, ее следует добавить с помощью .add()
, а не .update()
.
Скажем, у вас есть строка foo_str
, содержимое которой 'this is a sentence'
, и у вас есть некоторый набор bar_set
равный set()
.
Если вы сделаете bar_set.update(foo_str)
, содержимое вашего набора будет {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Если вы сделаете bar_set.add(foo_str)
, содержимое вашего набора будет {'this is a sentence'}
.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Или же
keep.update(np.arange(11))
Для меня в Python 3 это работает просто так:
keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))
Я не знаю, может ли это быть правильным...
Мне нравится делать это, чтобы преобразовать исходный набор и значения, которые я хотел бы добавить, в списки, добавить их, а затем преобразовать обратно в набор, например так:
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'}