【发布时间】:2021-12-08 13:22:29
【问题描述】:
我对@987654321@ 的理解是,如果密钥存在,则不会对默认参数进行评估。还有几个sources 含蓄地留下了这种解释。但事实证明并非如此。
假设有一个 dict 具有 str 或 int 类型的整数键。
因此,检索值模块键类型的一行是使用.get,默认值取决于替代类型的键。
>>> d = {'2':4}
>>> d.get(2, d['2'])
4
>>> d.get('2', d[2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
如果键存在,评估默认参数的意义何在?
这只是方法的糟糕设计还是我过度概括了.get() 的预期功能?
【问题讨论】:
-
d[2]在传递给函数之前得到评估。 -
由于 d[2] 不存在,所以抛出错误。需要将有效的默认值传递给 dict.get。
标签: python dictionary keyerror