Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在带有索引的字典上调用get()?_Python - Fatal编程技术网

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

Python 如何在带有索引的字典上调用get()?,python,Python,我有一个字典数组,但我遇到了一个场景,我必须从字典数组的第一个索引中获取值,下面是我试图查询的块 address_data = record.get('Rdata')[0].get('Adata') 这会引发以下错误: TypeError:“非类型”对象不可下标 我尝试了以下几点: if record.get('Rdata') and record.get('Rdata')[0].get('Adata'): address_data = record.get('Rdata')[0].g

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

address_data = record.get('Rdata')[0].get('Adata')
这会引发以下错误:

TypeError:“非类型”对象不可下标
我尝试了以下几点:

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
            }
          ]

        }
      ]
    }

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

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\u data
设置为
None


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

你能举个例子说明一下
地址数据的样子吗?你可以用一行:
地址数据=bool(record.get('Rdata'))和record.get('Rdata')[0]。get('Adata')或None
-你可以用你想要的任何回退值替换
None
,你需要看看
记录
循环是什么样的,not
address\u data
@JacobIRR
len(record.get('Rdata'))
如果值不存在,则会立即失败,因为它变为
len(None)
我看到了示例,但它与您描述的问题无关。没有
Rdata
键。请讲一讲。
记录
的嵌套级别太深,您的方法无法处理该示例。如果存在角色\u数据,但该数据不可编辑,则此操作将失败。我想我们可以假设,
record
格式良好是可以的,但是
Rdata
只是可选的,而不是容纳所有可能的
dict
。(我们还假设
record
首先有一个
get
方法。)