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

Python如何高效遍历嵌套JSON批量提取多实例特定字段

BF1服务器玩家名批量获取代码优化方案

原有硬编码索引逐行打印的写法冗余度高,且玩家数量变动时极易触发索引越界错误,也无法灵活适配两支队伍的数据获取需求,针对嵌套字典/列表结构的接口返回值,直接做层级遍历即可实现无硬编码批量提取,具体方案如下:

优化后完整代码

import requests

url = "https://api.gametools.network/bf1/players/?gameId=7218126050214"
resp = requests.get(url)
# 增加请求状态校验,避免接口异常时后续解析报错
resp.raise_for_status()
data = resp.json()

# 遍历所有队伍,自动覆盖0、1两支队伍,无需手动指定索引
for team_id, team_info in enumerate(data["teams"]):
    print(f"--- 队伍{team_id} 玩家名单 ---")
    # 批量提取当前队伍所有玩家的用户名,自动适配玩家总数
    for player in team_info["players"]:
        print(player["name"])

关键逻辑说明

  • 接口返回的嵌套结构逻辑非常清晰:最外层字典的teams字段对应队伍列表,列表内每个元素是单支队伍的信息字典,每个队伍字典的players字段对应该队所有玩家的列表,每个玩家字典内的name字段就是需要的用户名
  • 遍历列表时不需要手动写从0到N的索引,循环会自动覆盖列表内的所有元素,不管队伍内玩家数量是多少都能正常输出,不会出现硬编码索引导致的IndexError越界问题
  • 如果只需要提取特定队伍的玩家名单,不需要做双层循环,比如要提取原代码中的1号队伍名单,一行代码即可拿到完整用户名列表:team1_player_names = [p["name"] for p in data["teams"][1]["players"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:39:19