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

API数据无法正确存入字典:数据重复追加至所有球队列表求助

NFL赛事数据提取问题:数据错误追加到所有球队列表,子类别长度超出预期

问题概述

我从ESPN的NFL 2022赛季第16周赛事API提取32支球队的12项数据用于胜负预测,预先定义了指定格式的字典,运行提取脚本时出现两个异常:

  • 子类别列表长度达到60,而非__init__方法中last_games参数设定的数值
  • 目标代码中的数据未存入对应球队的[team_id - 1]索引位置,而是追加到所有球队的列表中

相关代码片段

fill_game()方法的循环逻辑

for game in range(len(games["items"])):
     self.fill_home_team(games["items"][game]["$ref"])

数据追加代码

# Add Turnover Differential
self.stats[team_id - 1][0]["Turnover Differential"].append(path[10]["stats"][39]["value"])

# Add RedZone Efficiency
self.stats[team_id - 1][1]["RedZone Efficiency"].append(path[10]["stats"][12]["value"])

# Add Third Down Attempts
self.stats[team_id - 1][2]["Third Down Attempts"].append(path[10]["stats"][29]["value"])

排查方向

  1. 字典初始化的引用共享问题
    检查球队字典模板的初始化方式:如果所有球队的字典都指向同一个内存对象(比如用[team_template]*32或未做深拷贝的列表推导),那么对任意一个球队的列表执行append操作,所有球队的列表都会同步更新。
    修复示例:

    # 为每个球队创建独立的字典实例
    self.stats = [
        {
            "Turnover Differential": [],
            "RedZone Efficiency": [],
            "Third Down Attempts": []
            # 其他12项数据字段
        } for _ in range(32)
    ]
    # 或者使用深拷贝
    import copy
    team_template = {"Turnover Differential": [], ...}
    self.stats = [copy.deepcopy(team_template) for _ in range(32)]
    
  2. 循环未限制处理赛事数量
    当前循环遍历了所有赛事items,未应用last_games参数的限制,导致处理了超过指定数量的赛事,最终列表长度超出预期。同时需注意:单场比赛包含主客两队,若只处理主队但赛事数量未做限制,会产生远超预期的数据条目。
    修复示例:

    # 仅处理last_games指定数量的赛事
    for game in range(min(len(games["items"]), self.last_games)):
        self.fill_home_team(games["items"][game]["$ref"])
        # 若需要统计客队数据,需补充处理客队的逻辑
        # self.fill_away_team(games["items"][game]["$ref"])
    
  3. team_id的有效性验证
    打印输出team_id的值,确认其是否在1-32的范围内,是否存在重复、错误的ID值。如果team_id始终为固定值,会导致所有数据都追加到同一索引,再结合引用共享问题,就会出现所有球队列表长度异常的情况。

  4. 赛事数据的归属校验
    确认path[10]["stats"]中的数据是否确实属于当前team_id对应的球队,是否错误地将客队数据赋值给主队,或者反之,导致重复统计数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:55:26