如何处理API返回JSON中owner_id键偶发缺失时的字段提取问题
问题原因
你写的代码拿不到值是两个逻辑错误:
- 判断键存在的时候找错了对象:
'owner_id' in users是检查最外层的响应总字典有没有这个键,但实际上owner_id是存在于data数组内的单条记录(也就是循环里的each变量)里的,外层字典永远不会有这个键,判断条件始终不成立,循环体根本不会执行,最后只能拿到空列表。 - 错误使用了
while循环:这里只需要对每条记录做一次存在性判断,用if分支就够了,while在这里属于多余逻辑,就算判断条件写对也会触发死循环。
正确实现
基础遍历写法
逻辑最直观,容易理解:
# 先初始化存储结果的空列表 accounts = [] for each in users['data']: # 检查当前遍历到的单条记录是否存在owner_id键 if 'owner_id' in each: accounts.append(each['owner_id'])
简洁列表推导式写法
Python中更精简的写法,执行逻辑和上面完全一致:
accounts = [each['owner_id'] for each in users['data'] if 'owner_id' in each]
两种写法都会自动跳过不存在
owner_id键的记录,只把存在该键的对应值存入结果列表。
内容的提问来源于stack exchange,提问作者mrOlympia
相关产品推荐
相关产品推荐

