当我想在 Python 中调用字典中的值的空列表时,我收到错误



我有一本字典,

如下所示
[{
“a”: {
“uuid”: “4458”,
“created_at”: “2022-10-19 12:20”,
“source_platform”: “abc”,
“platform”: “UK”
},
“b”:[],
“c”: [],
“d”: [],
“f”: [],
“e”: [],
“g”: [],
“h”: [],
“i”: [],
“j”: {}
}]

如果诸如"b"或"j"之类的键的列表为空,我需要返回"no_info"。

但是当我使用此功能时

def get_lead_first_platform(data: dict) -> str:
try:
if isinstance(data.get('b'), list):
if data.get('b')[0].get('ad_source'):
return data.get('b')[0].get('ad_source')
else:
return 'no_info'
except Exception as e:
print(f'{inspect.stack()[0][3]} -- {e}')
return None

它给了我这个错误get_lead_first_platform -- 'list' object has no attribute 'get'

您需要在访问列表之前进行空检查。

def get_lead_first_platform(data: dict) -> str:
try:
if isinstance(data.get('b'), list):
if len(data.get('b')[0]) > 0:
return data.get('b')[0].get('ad_source')
else:
return 'no_info'
except Exception as e:
print(f'{inspect.stack()[0][3]} -- {e}')
return None

你没有你所说的"有字典"。您在这里拥有一个包含字典的列表。因此,如果将其传递给函数,则实际上是在列表上调用.get()

所以data.get("b")

[{
“a”: {
“uuid”: “4458”,
“created_at”: “2022-10-19 12:20”,
“source_platform”: “abc”,
“platform”: “UK”
},
“b”:[],
“c”: [],
“d”: [],
“f”: [],
“e”: [],
“g”: [],
“h”: [],
“i”: [],
“j”: {}
}].get("b")

也许尝试执行get_lead_first_platform(data[0]).

编辑:

使用.get()修复错误后,如果语句"b"为空list,您将遇到语句data.get('b')[0]的"索引超出范围"错误。

相关内容

  • 没有找到相关文章

最新更新