Python dict get函数做得不对吗?

2024-09-30 02:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

这样,如果mainDict没有key,它将在backupDict中查找它,如果它也不在那里,则引发异常,因为我没有使用get进行backupDict查找。在

所发生的情况是,即使在检查mainDict是否有{}之前,Python会引发一个不在{}中的异常。是的,它不在那里,因为它在mainDict里!!在

为什么会这样?在


Tags: key函数defaultget字典情况val语句
2条回答

函数调用的参数在调用之前进行求值。当您使用backupDict[key]作为参数时,必须对其进行求值,以便将结果传递给getdefault参数始终是求值的;只是不总是返回。在

如果您不想对其进行评估,可以使用其他公式,例如:

mainDict[key] if key in mainDict else backupDict[key]

这将只评估其中一个。在

是的,如果键不在字典中,dict.get函数返回default。但是default被计算。在

你可以用这样的中级词典。在

main = dict(a=5, c=3)
backup = dict(a=6, b=9, c=4)

intermediate = dict(backup, **main)
print(intermediate['a'])
print(intermediate['b'])

你会得到:

^{pr2}$

以及:

print(intermediate['d'])

你有个例外:

^{4}$

相关问题 更多 >

    热门问题