如何在使用For Loop迭代API请求时将关联id纳入返回结果
如何在API响应结果中关联对应的子目录ID
我正在遍历一组子目录ID列表,向API发起请求并收集响应,但目前的结果里没有包含对应的ID,希望能把每个请求的ID关联到返回的结果条目里。
现有代码
import requests import json responses = list() ## 定义responses为列表 responses.clear() ## 每次运行脚本时清空列表 ids = ['XXXXXXid1XXXXXX', 'XXXXXXid2XXXXXX', 'XXXXXXid3XXXXXX'] ## 定义ID列表 for id in ids: url = 'https://api.website/PartOfWebsite/{}'.format(id) rr = requests.get(url, params= {'apikey': 'my-api-key'}) data = json.loads(rr.text) responses.append(data)
当前响应格式
[{'python_rules': [{'ad': 'some result', 'ret': 23908092093094808203, 'shure': 2.5}, {'ad': 'some result', 'ret': 902830894023342, 'share': 2.32}, {'ad': 'some result', 'ret': 98209283049820, 'shure': 21.3}]}]
期望的响应格式
希望每个python_rules里的条目都带上对应的请求ID:
[{'python_rules': [{'ad': 'some result', 'ret': 23908092093094808203, 'shure': 2.5, 'id': 'XXXXXXid1XXXXXX'}, {'ad': 'some result', 'ret': 902830894023342, 'share': 2.32, 'id': 'XXXXXXid2XXXXXX'}, {'ad': 'some result', 'ret': 98209283049820, 'shure': 21.3, 'id': 'XXXXXXid3XXXXXX'}]}]
解决方案
你只需要在解析完API返回的数据后,遍历python_rules里的每个条目,把当前循环的ID添加进去即可。修改后的代码如下:
import requests import json responses = list() responses.clear() ids = ['XXXXXXid1XXXXXX', 'XXXXXXid2XXXXXX', 'XXXXXXid3XXXXXX'] for id in ids: url = 'https://api.website/PartOfWebsite/{}'.format(id) rr = requests.get(url, params= {'apikey': 'my-api-key'}) data = json.loads(rr.text) # 遍历每个python_rules条目,添加对应的id for rule in data['python_rules']: rule['id'] = id responses.append(data)
说明
这段代码的核心改动是在解析完data之后,新增了一个内层循环:
- 遍历
data['python_rules']中的每个字典对象 - 给每个字典添加
'id'键,值为当前循环的id变量
这样处理后,最终的responses列表里每个python_rules条目都会带上对应的请求ID,完全符合你期望的格式。
内容的提问来源于stack exchange,提问作者IamTrying
相关产品推荐
相关产品推荐

