在Python中将值附加到集合

如何向现有的set添加值?

678330 次浏览
your_set.update(your_sequence_of_values)

例如,your_set.update([1, 2, 3, 4])。或者,如果你出于其他原因来生成循环中的值,

for value in ...:
your_set.add(value)

但是,当然,在其他可行的情况下,用单个.update调用批量执行它更快更方便。

像这样使用update:

keep.update(newvalues)

你也可以使用|操作符来连接两个集合(集合论中的联盟):

>>> 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([...])而不是{...}

定义一个集合

a = set()

使用add来附加单个值

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

使用update从元组、集合、列表或冻结集合中添加元素

a.update([3, 4])
>>> print(a)
{1, 2, 3, 4}

注意:由于set元素必须是可哈希的,并且列表被认为是可变的,所以你不能add一个列表到set。你也不能add其他集合为一个集合。但是,您可以从列表和集合中添加元素,如.update方法所示。

当你在谷歌上查找“Python如何向set中添加元素”时,这个问题是第一个出现的问题,所以值得明确指出的是,如果你想向set中添加整个字符串,它应该使用.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'}

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

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

我不知道这是否正确……

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

keep.update(np.arange(11))

我喜欢这样做的方法是将原始集合和我想添加到列表中的值同时转换,添加它们,然后将它们转换回集合,就像这样:

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

这样,我还可以使用相同的逻辑轻松地添加多个集,如果我尝试使用.update()方法,则会得到TypeError: unhashable type: 'set'

我只是想在这里补充一点。所以我在三种方法中寻找最快的方法。

  1. 使用set.add()函数
  2. 使用set.update()函数
  3. 使用&;|"运算符函数。

我发现,要将单个值或多个值添加到一个集合中,必须使用set.add()函数。这是其他方法中最有效的方法。

所以我做了个测试,结果如下:

  1. set.add() Took: 0.5208224999951199
  2. <李> set.update()了: 李0.6461397000239231”< / >
  3. “|”;Took: 0.7649438999942504

PS:如果你想知道更多的分析。

检查这里:将值追加到设置的最快方法