Добавить значения к набору в Python - PullRequest
305 голосов
/ 03 августа 2010

У меня есть такой набор:

keep = set(generic_drugs_mapping[drug] for drug in drug_input)

Как мне добавить значения [0,1,2,3,4,5,6,7,8,9,10] в этот набор?

Ответы [ 8 ]

349 голосов
/ 03 августа 2010
keep.update(yoursequenceofvalues)

например, keep.update(xrange(11)) для вашего конкретного примера. Или, если у вас есть для получения значений в цикле по какой-то другой причине,

for ...whatever...:
  onemorevalue = ...whatever...
  keep.add(onemorevalue)

Но, конечно, массовое выполнение одного вызова .update быстрее и удобнее, если это возможно.

228 голосов
/ 12 августа 2015

Определить набор

a = set()

Используйте add для добавления отдельных значений

a.add(1)
a.add(2)

Используйте update для добавления итерационных значений

a.update([3,4])

Проверьте свою коллекцию

a
Out[*n*]: {1, 2, 3, 4}

Вот и все - запомните, обновите , если он повторяется (он же список или кортеж), или добавьте , если нет.Удачного кодирования!

93 голосов
/ 06 августа 2014

Вы также можете использовать оператор | для объединения двух множеств ( union в теории множеств):

>>> 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([...]) вместо {...}.

40 голосов
/ 03 августа 2010

Используйте update вот так:

keep.update(newvalues)
8 голосов
/ 21 мая 2018

Этот вопрос является первым, который появляется в 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'}.

1 голос
/ 15 мая 2019

Мне нравится делать это, чтобы преобразовать как исходный набор, так и значения, которые я хотел бы добавить в списки, добавить их, а затем преобразовать обратно в набор, как показано ниже:

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'}

Таким образом, я также могу легко добавить несколько наборов, используя одну и ту же логику, что дает мне TypeError: unhashable type: 'set', если я пытаюсь сделать это с помощью метода .update().

1 голос
/ 15 марта 2019
keep.update((0,1,2,3,4,5,6,7,8,9,10))

Или

keep.update(np.arange(11))
0 голосов
/ 10 октября 2018

Для меня в Python 3 это работает просто так:

keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))

Я не знаю, может ли это быть правильным ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...