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

GET请求数据解析时dict.get()不返回指定默认值,无限循环如何解决

问题原因梳理
  • 核心逻辑错误:你当前的newResults取值完全取决于data['tickets']列表的最后一个元素。只要最后一个元素存在id键,newResults就会被赋值为真值的id数值,永远不会触发你设置的False默认值。如果某一页返回的tickets是空列表,for循环不会执行,newResults会保留上一轮的真值,直接进入无限循环。
  • 请求参数异常:构造URL时per_page= {per_page}的等号后多了一个空格,会导致服务器无法正确识别分页参数,可能始终返回前几页的有效数据,永远不会走到无数据的终止页。
  • 隐性风险:循环变量名用了Python内置函数id,可能引发命名冲突;如果tickets列表中的元素不是字典类型,调用get()方法会直接报错,你可以添加type()打印排查返回结构是否符合预期。
修复方案

你需要修改终止条件的判断逻辑,每次请求新页面后先重置终止标记,只要本页存在有效ticket才继续翻页,参考代码如下:

import requests

newResults = True
pages = 9

while newResults:
    # 移除per_page参数后的多余空格
    Request = f"{url}?key={API_Key}&ts={ts}&hash={hash}&project_id={project_id}&per_page={per_page}&page={pages}&date_from={date_from}&date_to={date_to}"
    r = requests.get(Request)
    data = r.json()
    # 先默认本页无有效数据,只要有符合要求的ticket就改回True
    newResults = False
    # 修改变量名避免和内置id冲突
    for ticket in data['tickets']:
        ticket_id = ticket.get('id', False)
        if ticket_id:
            newResults = True
            # 此处添加你原本的ticket处理逻辑
    pages += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:57:02