Python dict.get()引发了KeyError

时间:2014-11-11 09:45:17

标签: python python-2.7 dictionary

我迷失在这里,Python 2.7,我有一个字典mt,我使用get()方法,文档说:

  

get(key[, default])如果key在,则返回key的值   字典,否则默认。如果未给出default,则默认为   无,因此此方法永远不会引发KeyError

但我还是得到了

 File "/home/ubuntu/subscription-workers/commands/dr/rebilling.py", line 48, in rebill
    if mt.get('is_rebill', 0) == 1:
 KeyError: 'is_rebill'

任何想法为什么?

mt是正常dict,有时没有密钥。

2 个答案:

答案 0 :(得分:6)

所以我把问题钉了下来。在此代码实施之前,有一个

File "/home/ubuntu/subscription-workers/commands/dr/rebilling.py", line 48, in rebill
    if mt['is_rebill'] == 1:
KeyError: 'is_rebill'

问题是旧版本中有.pyc文件,但堆栈跟踪正在加载实际代码。运行后

find . -name "*.pyc" -exec rm -rf {} \;

并重新加载应用程序一切都很好,没有问题。

答案 1 :(得分:0)

>>> mt = {'key1' : 1}
>>> mt.get('is_rebill', 0)
0

如果密钥不存在则不会生成密钥错误,它会返回0

>>> mt.update({'is_rebill':1})
>>> mt.get('is_rebill', 0)
1

>>> if mt.get('is_rebill', 0) == 1:
...     print True
... else:
...     print False
... 
False