如何在Python中将多个字符串添加到集合中?

49

我是Python的新手。当我使用add()函数添加字符串时,它很好用。但是当我尝试添加多个字符串时,它把它们视为字符项。

>>> set1 = {'a', 'bc'}
>>> set1.add('de')
>>> set1
set(['a', 'de', 'bc'])
>>> set1.update('fg', 'hi')
>>> set1
set(['a', 'g', 'f', 'i', 'h', 'de', 'bc'])
>>>

我想要的结果是 set(['a', 'de', 'bc', 'fg', 'hi'])

这是否意味着 update() 函数不能用于添加字符串?

使用的 Python 版本是:Python 2.7.1


2
尝试使用 set1.update(['fg', 'hi'])。 - nitekrawler
4个回答

46

您给了update()多个可迭代对象(字符串也是可迭代对象),因此它会遍历其中的每一个,将每个对象中的元素(字符)添加到集合中。请给它一个包含您要添加的字符串的迭代器(例如列表)。

set1.update(['fg', 'hi'])

40

update 将其参数视为集合。因此提供的字符串'fg'被隐式转换为包含 'f' 和 'g' 的集合。


set.update()会接受任何可迭代对象,并不会将其参数转换为集合。问题在于,字符串是可迭代的并且会产生它们的字符。 - kindall

10

这里有一个使用管道等于符号 ( |= ) 的有趣技巧...

>>> set1 = {'a', 'bc'}
>>> set1.add('de')
>>> set1
set(['a', 'de', 'bc'])
>>> set1 |= set(['fg', 'hi'])
>>> set1
set(['a', 'hi', 'de', 'fg', 'bc'])

6
尝试使用set1.update(['fg', 'hi'])set1.update({'fg', 'hi'}),传入的字符串列表或集合中的每个项目都将添加到集合中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接