【发布时间】:2016-03-26 01:07:43
【问题描述】:
所以,我知道这个,
a = {} # dict
构造一个空字典。现在,我也捡到了这个,
b = {1, 2, 3} # set
创建一个集合。这很容易验证,因为,
>>>print(type(a))
<class 'dict'>
>>>print(type(b))
<class 'set'>
虽然我理解它的作用,但我看不出为什么我们对空字典使用“集合表示法”。我试图在手册的set 和dict 部分中找到有关其背后逻辑的更多信息,但遗憾的是,我什么也没得到。
谁能向我解释为什么我们会这样做?是因为历史原因,还是我遗漏了一些明显的东西?
【问题讨论】:
-
嗯,
set就像dict有键但没有值,它们都是使用哈希表实现的。但是,是的,{}表示法表示空的dict而不是空的set有点烦人,但这是一个历史产物。我看到一个建议,{:}应该 是空的dict和{}是空的set,但我怀疑这将永远实现,因为它与太多的冲突现有代码。 -
@PM2Ring,谢谢!我肯定会支持这一点,因为我觉得目前的情况(除了语言定义,我猜这很清楚)读起来有点模棱两可。
-
FWIW,我很容易记住
{}是一个空的dict,因为 Python 一直都有dicts,因为它们是 Python 工作方式的基础:普通对象属性存储在dict中,变量的行为就好像它们是dict中的名称:值对(尽管出于效率原因,它们不一定以这种方式实现)。而sets 不久之后被添加到该语言中。 (当然,在那之前,总是可以通过使用带有虚拟值的dict来“伪造”一个集合)。
标签: python dictionary set