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
,你需要看看记录
循环是什么样的,notaddress\u data
@JacobIRRlen(record.get('Rdata'))
如果值不存在,则会立即失败,因为它变为len(None)
我看到了示例,但它与您描述的问题无关。没有Rdata
键。请讲一讲。记录
的嵌套级别太深,您的方法无法处理该示例。如果存在角色\u数据,但该数据不可编辑,则此操作将失败。我想我们可以假设,record
格式良好是可以的,但是Rdata
只是可选的,而不是容纳所有可能的dict
。(我们还假设record
首先有一个get
方法。)