我有这样的一套:
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]
到此集中?
Answers:
keep.update(yoursequenceofvalues)
例如,keep.update(xrange(11))
对于您的特定示例。或者,如果由于某些其他原因必须在循环中生成值,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
但是,当然.update
,在其他可行的情况下,只需一次调用即可批量执行此操作更快,更方便。
.add
希望有.update
一个可哈希的类型,而希望有一个可迭代的对象
.add
,而不是.update
,由于这个小细节,我最近遇到了一个偷偷摸摸的错误。
您还可以使用|
运算符来连接两个集合(集合理论中的并集):
>>> 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([...])
代替{...}
。
my_sets
,则可以big_set = my_sets[0].union(*my_sets[1:])
将它们全部合并起来
这个问题是第一个在Google查询“ Python如何添加要设置的元素”时显示在Google上的问题,因此,值得注意的是,如果您想将整个字符串添加到集合中,则应添加.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'}
。
我喜欢这样做的方法是将原始集合和想要添加的值都转换为列表,添加它们,然后将它们转换回集合,如下所示:
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()
方法,则会得到一个提示。
.add
添加一个项目,.update
添加多个项目。那是对的吗?