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

Python for循环多次调用API追加dict结果存入DataFrame问题

问题修复方案

你的代码存在3个核心逻辑错误,修正后即可正常收集所有第二次请求的返回结果:

错误点说明

  • 调用requests.get()得到的是Response对象,不能直接遍历或取字段,需要先调用.json()方法解析为Python字典/列表结构
  • 追加操作方向写反:你现在是把公共存储的data列表追加到单次请求结果D中,正确逻辑是把单次请求结果D追加到公共存储的data列表中
  • 第二次请求未使用第一次遍历的条目作为请求参数,导致每次请求结果重复

修正后可运行代码

import requests
import pandas as pd

# 第一次API请求,解析返回结果
first_resp = requests.get("你的首次请求API地址")
first_result = first_resp.json()
# 假设首次返回的待遍历条目存在results字段,按实际返回结构调整即可
item_list = first_result["results"]

data = []
for item in item_list:
    # 第二次请求,把首次遍历到的条目作为参数传入,示例是传item里的id字段,按实际需求调整参数
    second_resp = requests.get(
        "你的第二次请求API地址",
        params={"id": item["id"]}
    )
    second_result = second_resp.json()
    # 取第二次请求返回的结果字典,按实际字段名调整
    D = second_result["results"]
    # 把单次结果追加到公共存储列表
    data.append(D)

# 最终生成DataFrame
df = pd.DataFrame(data)

可选优化

如果你的API调用量比较大,可以添加异常捕获和超时设置,避免单次请求失败导致整个流程中断:

for item in item_list:
    try:
        second_resp = requests.get(
            "你的第二次请求API地址",
            params={"id": item["id"]},
            timeout=10
        )
        second_resp.raise_for_status()
        second_result = second_resp.json()
        D = second_result["results"]
        data.append(D)
    except Exception as e:
        print(f"请求失败,对应条目id:{item['id']}, 错误信息:{e}")

内容的提问来源于stack exchange,提问作者user1904364

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:39:03