Python如何从requests返回的嵌套列表字典中不指定键提取值
实现方案
你可以直接提取字典的首个值,不需要指定具体键名即可完成提取,适配你给出的嵌套数据结构的代码如下:
1. 基础提取逻辑
假设你已经将接口返回的内容转换为Python对象:
import requests # 原请求拿到嵌套数据 resp = requests.get("你的原API接口地址") resp_data = resp.json() # 对应你给出的结构:[[{'DOI': '10.1021/nn1025675'}], [{'DOI': '10.1128/mcb.00032-10'}]]
使用列表推导式即可批量提取所有值,无需指定DOI键:
extracted_values = [next(iter(sub_list[0].values())) for sub_list in resp_data]
执行后extracted_values的结果为:['10.1021/nn1025675', '10.1128/mcb.00032-10'],符合你的需求。
逻辑说明:
iter(dict.values())会将字典的所有值转为可迭代对象,next()方法直接取出首个值,完全不需要依赖键名。
2. 传入下一个GET请求
根据下一个接口的参数要求直接使用提取到的结果即可,示例如下:
单值传参
# 取第一个提取值传参 params = {"你的参数名": extracted_values[0]} next_resp = requests.get("你的目标API地址", params=params)
多值批量传参
如果接口要求多值用逗号分隔传入:
params = {"你的参数名": ",".join(extracted_values)} next_resp = requests.get("你的目标API地址", params=params)
3. 鲁棒性增强(可选)
如果接口返回的结构可能存在空列表、空字典的异常情况,可以加判断逻辑避免报错:
extracted_values = [] for sub_list in resp_data: # 校验子列表非空 if not sub_list or not isinstance(sub_list, list): continue item_dict = sub_list[0] # 校验是字典且存在键值对 if not isinstance(item_dict, dict) or len(item_dict) == 0: continue extracted_values.append(next(iter(item_dict.values())))
内容的提问来源于stack exchange,提问作者user1222447
相关产品推荐
相关产品推荐

