使用大括号初始化设置

我正在学习python,我有一个关于初始化集合的新手问题。 通过testing,我发现一个集合可以像这样初始化:

my_set = {'foo', 'bar', 'baz'} 

这样做有什么缺点,而不是以下的标准方式:

 my_set = set(['foo', 'bar', 'baz']) 

还是只是一个风格的问题?

设置字面语法有两个明显的问题:

 my_set = {'foo', 'bar', 'baz'} 
  1. 它在Python 2.7之前是不可用的

  2. 没有办法使用该语法表示空集(使用{}创build一个空字典)

这些对你来说可能是重要的,也可能不重要。

概述这种语法的文档部分在这里 。

用单个单词参数比较{}set()之间的区别。

 >>> a = set('aardvark') >>> a {'d', 'v', 'a', 'r', 'k'} >>> b = {'aardvark'} >>> b {'aardvark'} 

但是ab都是套。

从Python 3文档 ( Python 2.7相同 ):

大括号或set()函数可以用来创build集合。 注意:要创build一个空集,必须使用set(),而不是{}; 后者创build一个空字典,我们将在下一节讨论一个数据结构。

在python 2.7中:

 >>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} >>> my_set set(['bar', 'foo', 'baz']) 

请注意{}也被用于map / dict

 >>> m = {'a':2,3:'d'} >>> m[3] 'd' >>> m={} >>> type(m) <type 'dict'> 

人们可以使用集合理解:

 >>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' } >>> a set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])