如何创build只有一个元素的Python集?

如果我有一个string,并且想创build一个最初包含那个string的集合,那么Pythonic的方法会比以下更多吗?

mySet = set() mySet.add(myString) 

下面给我一组myString中的字母:

 mySet = set(myString) 

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

 mySet = {'abc'} 

例如,这个简单的方法:

 mySet = set([myString]) 

对于Python2.7 + :

 set_display ::= "{" (expression_list | comprehension) "}" 

例:

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

请注意,空{}不是一个set ,它是一个dict

set帮助:

 class set(object) | set() -> new empty set object | set(iterable) -> new set object 

正如你所看到的, set()需要迭代,string也是可迭代的,所以它将string转换为一个集合。

把这个string放在一些迭代器中,并传递给set()

 >>> set(('foo',)) #tuple set(['foo']) >>> set(['foo']) #list set(['foo']) 

set(obj)将要迭代槽obj并添加所有独特的元素到集合中。 由于string也是可迭代的,如果你传递一个string给set()那么你得到了你的集合中唯一的字母。 你可以把你的obj首先列表:

 set(["mystring"]) 

不过那不是优雅的海事组织。 你知道,即使是创build一个空字典,我们也喜欢在dict()之上。 同样在这里。 我wolud使用以下语法:

 myset = {"mystring"} 

请注意,对于元组,在它之后需要逗号:

 mytuple = ("mystring",) 

如果该组也不可能改变,请考虑使用一个frozenset

 mySet = frozenset([myString])