我有这样一个嵌套字典:
mail = {
'data': { 'from': {'text': '123@example.com'}}
# some other entries...
}
我尝试使用以下代码复制from
值:
第二行抛出异常:
AttributeError: 'NoneType' object has no attribute 'get'
奇怪的是,这种情况有时才会发生。如果我在第二行前面添加一个print语句,比如:
data = mail.get('data')
print(type(data.get('from')))
new_dict['parse']['from'] = data.get('from').get('text')
错误消失了,我得到了<class 'dict'>
。如果我删除print语句,它有时会工作,有时会抛出错误。代码或数据中没有其他更改。我使用get()
的原因是为了在密钥丢失的情况下安全地检索值。在
在调用
data.get('from').get('text')
中,如果data
不包含键'from'
,它将返回None
。None.get('text')
引发您看到的异常,因为None
对象没有get
方法(当然)。在解决这个问题的方法是传递一个比
None
(默认默认对象)更好的默认对象,后者具有get
方法。那将是一个空字典,{}
:相关问题 更多 >
编程相关推荐