Python set {}不等于set([]),为什么?

时间:2017-11-24 23:21:57

标签: python set

我正在使用Python集进行一些简单的实验 我注意到这种奇怪的行为(至少对我而言)。

>>> {1,2,3} == set([1,2,3])
True
>>> {1} == set([1])
True
>>> {} == set([])
False
>>>

为什么最后一个说False
我觉得这很不合逻辑。

这有什么好理由吗?

1 个答案:

答案 0 :(得分:8)

{}创建一个空的字典,而不是一个集合。

没有空的集合文字,只需使用set()(无参数)。

来自official Python tutorial on sets

  

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

并从表达式set displays section引用文档:

  

无法使用{}构建空集;这个文字构造了一个空字典。

集合是语言的相对较晚的补充;使用{elem1, elem2}创建集合仅在Python 3中引入并添加到Python 2.7中的Python 2中,但{}用于空字典,远远超过至少早在0.9。2(1991年发布)。