如何仅使用一个元素创建Python集?

Tha*_*ess 46 python set python-3.x

如果我有一个字符串,并且想要创建一个最初包含该字符串的集合,那么是否有比以下更多的Pythonic方法?

mySet = set()
mySet.add(myString)
Run Code Online (Sandbox Code Playgroud)

以下给出了一组字母myString:

mySet = set(myString)
Run Code Online (Sandbox Code Playgroud)

dst*_*erg 42

在2.7和3.x中,您可以使用:

mySet = {'abc'}
Run Code Online (Sandbox Code Playgroud)

  • @TimPeters 是的,但这不适用于集合。 (2认同)

Ana*_*kov 21

例如,这种简单的方法:

mySet = set([myString])
Run Code Online (Sandbox Code Playgroud)


Ash*_*ary 6

对于Python2.7 +:

set_display ::=  "{" (expression_list | comprehension) "}"
Run Code Online (Sandbox Code Playgroud)

例:

>>> myString = 'foobar'
>>> s = {myString}
>>> s
set(['foobar'])

>>> s = {'spam'}
>>> s
set(['spam'])
Run Code Online (Sandbox Code Playgroud)

注意空{}是不是a set,它是a dict.

帮助set:

class set(object)
 |  set() -> new empty set object
 |  set(iterable) -> new set object
Run Code Online (Sandbox Code Playgroud)

如您所见,set()期望迭代和字符串也是可迭代的,因此它将字符串字符转换为集合.

将字符串放入一些可迭代的并将其传递给set():

>>> set(('foo',))  #tuple
set(['foo'])
>>> set(['foo'])   #list
set(['foo'])
Run Code Online (Sandbox Code Playgroud)