我迷失在这里,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
,有时没有密钥。
答案 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