Python间歇性地在同一个字典中抛出“AttributeError:'NoneType'对象没有属性'get'”

2024-04-23 12:15:10 发布

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

我有这样一个嵌套字典:

mail = {
   'data': { 'from': {'text': '123@example.com'}}
    # some other entries...
}

我尝试使用以下代码复制from值:

^{pr2}$

第二行抛出异常:

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()的原因是为了在密钥丢失的情况下安全地检索值。在


Tags: 代码textfromcomdataget字典example
1条回答
网友
1楼 · 发布于 2024-04-23 12:15:10

在调用data.get('from').get('text')中,如果data不包含键'from',它将返回NoneNone.get('text')引发您看到的异常,因为None对象没有get方法(当然)。在

解决这个问题的方法是传递一个比None(默认默认对象)更好的默认对象,后者具有get方法。那将是一个空字典,{}

data = mail.get('data')
new_dict['parse']['from'] = data.get('from', {}).get('text')

相关问题 更多 >