在Python中将值附加到集合中

时间:2010-08-02 22:40:05

标签: python set append

我有这样的一套:

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

如何将值[0,1,2,3,4,5,6,7,8,9,10]添加到此集中?

8 个答案:

答案 0 :(得分:345)

keep.update(yoursequenceofvalues)

例如,keep.update(xrange(11))为您的具体示例。或者,如果 在某个循环中由于其他原因产生值,

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

但是,当然,如果可行的话,在单个.update调用中批量处理它会更快更方便。

答案 1 :(得分:223)

定义集

a = set()

使用add附加单个值

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

使用update附加可迭代值

a.update([3,4])

检查您的收藏

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

就是这样 - 请记住,更新如果它是可迭代的(也就是列表或元组)或添加,如果没有。快乐的编码!

答案 2 :(得分:91)

您还可以使用|运算符连接两个集合(集合理论中的 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([...])代替{...}

答案 3 :(得分:40)

像这样使用update

keep.update(newvalues)

答案 4 :(得分:8)

这个问题是第一个出现在谷歌上的问题,当人们查找" 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'}

答案 5 :(得分:1)

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

keep.update(np.arange(11))

答案 6 :(得分:0)

对我来说,在Python 3中,它的工作方式很简单:

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

我不知道这是否正确...

答案 7 :(得分:0)

我要这样做的方法是将原始集合和要添加到列表中的值都转换为,添加它们,然后将它们转换回集合,如下所示:

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()