127

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

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

与以下标准方式相比,这样做是否有任何缺点:

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

还是只是风格问题?

4

4 回答 4

124

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

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

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

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

概述此语法的文档部分在此处

于 2013-06-28T20:36:54.620 回答
55

还比较单个单词参数之间{}的差异。set()

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

但两者a当然b都是套。

于 2014-03-16T17:17:53.307 回答
32

来自Python 3 文档同样适用于 python 2.7):

花括号或 set() 函数可用于创建集合。注意:要创建一个空集,您必须使用 set(),而不是 {};后者创建一个空字典,这是我们在下一节中讨论的数据结构。

在 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', '{', '}'])
于 2013-06-28T20:40:06.880 回答
9

您需要 empty_set = set()初始化一个空集。{}是一个空的dict

于 2020-03-18T21:23:26.947 回答