好好学习天天向上的小陈 2022-04-26 11:04 采纳率: 0%
浏览 106

python请求api接口后返回json格式列表,列表里有多个字典,每个字典里的键值对数量不一样,for循环遍历取值时报错keyerror

通过python的request请求api接口,get方式,返回json格式数据,是一个列表,列表里有多个字典,
然后通过for循环取值,但字典里的k,v数量不一样,数据类型下面这样,有的字典里有serviceUnit这个key,有的字典没有,导致在for循环时报keyerror错误,这种情况要怎么解决呢?

返回的数据样子:
[{'instancePattern': 0, 'heapMaxRate': 70.2, 'instanceName': 'LS29Interaction-Service', 'appId': 3768},
{'instancePattern': 0, 'heapMaxRate': 67.3, 'instanceName': 'furion_st', 'serviceUnit': 'LT30.01@furion', 'appId': 4163},
{'instancePattern': 0, 'heapMaxRate': 73.8, 'instanceName': 'AstES', 'appId': 2150}]

for循环代码:
response = requests.get(url, params=param, headers=header)

instance_data = json.loads(response.text)['data']

for i in instance_data:
instancePattern = i["instancePattern"]
heapMaxRate = i["heapMaxRate"]
instanceName = i["instanceName"]
serviceUnit = i["serviceUnit"]
appId = i["appId"]

  • 写回答

4条回答 默认 最新

  • 李子兮 2022-04-26 11:32
    关注

    如果你要获取的是特定key的值的话,就需要在获取之前做一下判断该key是否在字典中。比如
    for i in instance_data:
    if 'instancePattern' in i.keys():
    instancePattern = i["instancePattern"]

    评论

报告相同问题?

问题事件

  • 创建了问题 4月26日

悬赏问题

  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送