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

Pho*_*nix 0 python dictionary python-3.x

今天进来并进行了调试,发现由于not aDict被不同地对待,我预测的行为存在偏差not aDict=={}.有知道的人可以强调这两种形式之间的差异吗.

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

if not aDictA and not aDictB:
Run Code Online (Sandbox Code Playgroud)

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

代码行改为

if not aDictA=={} and not aDictB=={}:
Run Code Online (Sandbox Code Playgroud)

和代码按预期工作.

Ale*_*ton 6

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

在第一个,你正在检查它们是否是False.

>>> not {}
True
Run Code Online (Sandbox Code Playgroud)

但是在第二个中,你实际上是在检查它们是否为空(因此False)然后用它来反转它not.

>>> not not {}  # This is basically what you are doing.
False
Run Code Online (Sandbox Code Playgroud)

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