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

pet*_*rov 0 python set

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

>>> {1,2,3} == set([1,2,3])
True
>>> {1} == set([1])
True
>>> {} == set([])
False
>>>
Run Code Online (Sandbox Code Playgroud)

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

这有什么好的理由吗?

Mar*_*ers 8

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

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

关于集合官方Python教程:

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

并从表达式参考文档的set显示部分:

无法构造空集{}; 这个文字构造了一个空字典.

集合是语言的相对较晚的补充; 使用{elem1, elem2}创建一组中仅引入Python 3中和在添加到Python 2 的Python 2.7,但{}被用于为,远远更长的空字典,至少早0.9.2(释放1991).