If 语句顺序和键错误 python

If statement ordering and key error python

即使我检查字典中是否存在密钥,我也会遇到密钥错误:

def foo(d):
    if (('element' in d.keys()) & (d['element'] == 1)):
        print "OK"

foo({})

documentation中我们可以读到:

The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

任何人都可以向我解释这种行为吗?

&是"bitwise and",and是逻辑"and"运算符,它们不是一回事。

你应该使用 and,你也可以删除不需要的括号以提高可读性。

您甚至不必调用 keys 方法:

if 'element' in d and d['element'] == 1: