У меня есть такой набор:
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
звонка быстрее и удобнее, когда это возможно.
.add
добавляет один элемент,.update
добавляет несколько элементов. Это верно?.add
ожидает один хешируемый тип, а.update
ожидает итерируемый объект.add
, но.update
я недавно столкнулся с довольно хитрой ошибкой из-за этой маленькой детали.Определить набор
Используйте add, чтобы добавить отдельные значения
Используйте обновление, чтобы добавить элементы из кортежей, наборов, списков или наборов функций
Если вы хотите добавить кортеж или замороженный набор, используйте add
Примечание. Поскольку элементы набора должны быть хешируемыми, а списки считаются изменяемыми, вы не можете добавить список в набор. Вы также не можете добавить другие наборы в набор. Однако вы можете добавить элементы из списков и наборов, как показано с помощью метода .update.
источник
Вы также можете использовать
|
оператор для объединения двух множеств ( объединение в теории множеств):Или более короткую форму, используя
|=
:Примечание. В версиях, предшествующих Python 2.7, используйте
set([...])
вместо{...}
.источник
my_sets
, то вы можетеbig_set = my_sets[0].union(*my_sets[1:])
объединить их всеИспользуйте
update
как это:источник
Этот вопрос является первым, который появляется в 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'}
.источник
Мне нравится делать это, чтобы преобразовать исходный набор и значения, которые я хотел бы добавить, в списки, добавить их, а затем преобразовать обратно в набор, например, так:
Таким образом, я также могу легко добавить несколько наборов, используя одну и ту же логику, что дает мне возможность,
TypeError: unhashable type: 'set'
если я попытаюсь сделать это с помощью.update()
метода.источник
Или
источник
Для меня в Python 3 это работает просто так:
Я не знаю, может ли это быть правильным ...
источник