不是dict而不是dict == {}之间的区别

时间:2014-04-14 10:36:37

标签: python python-3.x dictionary

今天进入调试阶段,发现由于not aDictnot aDict=={}的处理方式不同,我预测的行为存在偏差。知道的人是否可以突出显示这两种形式之间的差异。

偏差是由以下代码行引起的

if not aDictA and not aDictB:

两者都等于{}但if条件没有返回true。

代码行改为

if not aDictA=={} and not aDictB=={}:

并且代码按预期工作。

1 个答案:

答案 0 :(得分:6)

你认为空字典在布尔上下文中是False是正确的。因此,not {}empty_dict == {}是等效的,但是......

在第一个中,您正在检查它们是否为False

>>> not {}
True

但是在第二个中,您实际上是在检查它们是否为空(因此为False),然后使用not将其反转。

>>> not not {}  # This is basically what you are doing.
False

你会得到不同的结果,因为你实际上没有测试相同的条件。