如何在带有索引的字典上调用get()?

2024-09-26 17:56:41 发布

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

我有一个字典数组,但是我遇到了一个场景,我必须从字典数组的第一个索引中获取值,下面是我试图查询的块。你知道吗

address_data = record.get('Rdata')[0].get('Adata')

这将引发以下错误:

TypeError: 'NoneType' object is not subscriptable

我试着做到:

if record.get('Rdata') and record.get('Rdata')[0].get('Adata'):
   address_data = record.get('Rdata')[0].get('Adata')

但我不知道上述方法是好是坏。你知道吗

那么如何在python中处理这个问题呢?你知道吗

编辑:

"partyrecord": {

      "Rdata": [
        {

          "Adata": [
            {
              "partyaddressid": 172,
              "addressid": 142165
            }
          ]

        }
      ]
    }

Tags: dataget字典objectisaddress错误场景
2条回答

您可能想选择简单而不刺激的路线:

role_data = record.get('Rdata')

if role_data:
  address_data = role_data[0].get('Adata')
else:
  address_data = None

表达式假定record['Rdata']将返回至少包含一个元素的列表,如果不是这样,请提供一个。你知道吗

address_data = record.get('Rdata', [{}])[0].get('Adata')

现在,如果record['Rdata']不存在,您仍将有一个空的dict来调用get('Adata')。最终结果将address_data设置为None。你知道吗

(如果创建一个合适的默认值花费很大,则最好先检查密钥,因为无论get是否需要返回它,都将创建该默认值。但是[{}]是相当轻量级的,编译器可以立即生成它。)

相关问题 更多 >

    热门问题