Python dict get 函数没有做正确的事情?

shi*_*shu 3 python dictionary

我认为该.get(key, default=?)函数default仅在key不在 dict 中时才会查看该部分。

我想要做的是,查看我的主字典中是否存在一个键,如果不存在,查看它是否存在于备份字典中,如果它既不在主字典中也不在备份字典中,则引发 KeyError。

所以,把上面的英文语句直接翻译成 Python,我写道: val = mainDict.get(key, backupDict[key])

这样,如果mainDict没有key,它会去查backupDict,提高异常,如果它不存在任何,因为我没有使用getbackupDict查找。

正在发生的事情是,即使检查是否之前mainDictkey或没有,Python是提高例外,它是不是在backupDict。是的,它不在那里,因为它在那里mainDict!!

为什么会这样?

Bre*_*arn 5

在调用之前评估函数调用的参数。当您backupDict[key]用作参数时,必须对其进行评估,以便将结果传递给get. 的default参数总是评价; 它只是不总是返回

如果您不想评估它,您可以使用一些替代公式,例如:

mainDict[key] if key in mainDict else backupDict[key]
Run Code Online (Sandbox Code Playgroud)

这只会评估其中一个。