You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:57:02