通过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"]
如果你要获取的是特定key的值的话,就需要在获取之前做一下判断该key是否在字典中。比如
for i in instance_data:
if 'instancePattern' in i.keys():
instancePattern = i["instancePattern"]
额外列出一列来接收这个数据就行了 ,不存在的数据会自动null
你的目的是什么呢,做接口自动化吗,取值做断言还是接口关联取关联字段?
字典也是可以通过键值对遍历的,键值对不确定不是问题,问题在于不确定的这些键值对你是否也要存到数据库,如果存,那么肯定就是空值了,空值是赋0还是null还是‘’,这个需要确定,另外就是需要确定你的key的最大列表,每遍历一个字典,判断key是否在字典中,在就取值赋值,不在就赋值为指定的类型