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

如何将JSON响应中的多场比赛助攻值整合到单个字典键下

问题解决:将所有助攻值收集到单个字典键下

问题描述

我正在遍历按比赛场次分组的JSON响应,希望把所有助攻(ast)字段的值收集起来,分配给单个字典键。但目前每个值都对应独立的相同字典键,达不到预期效果。

JSON响应示例

{'data': [{'ast': 9,
           'blk': 0,
           'dreb': 4,
           'fg3_pct': 0.0,
           'fg3a': 2,
           'fg3m': 0,
           'fg_pct': 0.6,
           'fga': 20,
           'fgm': 12,
           'ft_pct': 0.333,
           'fta': 3,
           'ftm': 1,
           'game': {'date': '2003-10-29T00:00:00.000Z',
                    'home_team_id': 26,
                    'home_team_score': 106,
                    'id': 15946,
                    'period': 4,
                    'postseason': False,
                    'season': 2003,
                    'status': 'Final',
                    'time': ' ',
                    'visitor_team_id': 6,
                    'visitor_team_score': 92},
           'id': 361330,
           'min': '42:50',
           'oreb': 2,
           'pf': 3,
           'player': {'first_name': 'LeBron',
                      'height_feet': 6,
                      'height_inches': 8,
                      'id': 237,
                      'last_name': 'James',
                      'position': 'F',
                      'team_id': 14,
                      'weight_pounds': 250},
           'pts': 25,
           'reb': 6,
           'stl': 4,
           'team': {'abbreviation': 'CLE',
                    'city': 'Cleveland',
                    'conference': 'East',
                    'division': 'Central',
                    'full_name': 'Cleveland Cavaliers',
                    'id': 6,
                    'name': 'Cavaliers'},
           'turnover': 2},
          {'ast': 8,
           'blk': 0,
           'dreb': 10,
           'fg3_pct': 0.2,
           'fg3a': 5,
           'fg3m': 1,
           'fg_pct': 0.471,
           'fga': 17,
           'fgm': 8,
           'ft_pct': 0.571,
           'fta': 7,
           'ftm': 4,
           'game': {'date': '2003-10-30T00:00:00.000Z',
                    'home_team_id': 24,
                    'home_team_score': 95,
                    'id': 16277,
                    'period': 4,
                    'postseason': False,
                    'season': 2003,
                    'status': 'Final',
                    'time': ' ',
                    'visitor_team_id': 6,
                    'visitor_team_score': 86},
           'id': 361523,
           'min': '40:21',
           'oreb': 2,
           'pf': 1,
           'player': {'first_name': 'LeBron',
                      'height_feet': 6,
                      'height_inches': 8,
                      'id': 237,
                      'last_name': 'James',
                      'position': 'F',
                      'team_id': 14,
                      'weight_pounds': 250},
           'pts': 21,
           'reb': 12,
           'stl': 1,
           'team': {'abbreviation': 'CLE',
                    'city': 'Cleveland',
                    'conference': 'East',
                    'division': 'Central',
                    'full_name': 'Cleveland Cavaliers',
                    'id': 6,
                    'name': 'Cavaliers'},
           'turnover': 7}]}

现有代码

players_stats=[]
players_game_stats_url="https://balldontlie.io/api/v1/stats?season[]=2018&player_ids[]=237"
result=requests.get(players_game_stats_url).json()

for assists in result['data']:
    players_stats.append({"Assists per game":assists['ast']})

期望输出

{"Assists per game": [9,8,6,7,3]}

实际输出

[{'Assists per game': 9},
 {'Assists per game': 8},
 {'Assists per game': 6},
 {'Assists per game': 7},
 {'Assists per game': 3},
 {'Assists per game': 9},
 {'Assists per game': 4},
 {'Assists per game': 7},
 {'Assists per game': 3},
 {'Assists per game': 8},
 {'Assists per game': 8},
 {'Assists per game': 8},
 {'Assists per game': 2},
 {'Assists per game': 4},
 {'Assists per game': 9},
 {'Assists per game': 7},
 {'Assists per game': 7},
 {'Assists per game': 5},
 {'Assists per game': 8},
 {'Assists per game': 5},
 {'Assists per game': 3},
 {'Assists per game': 9},
 {'Assists per game': 4},
 {'Assists per game': 6},
 {'Assists per game': 3}]

解决方案

问题出在你每次循环都创建了一个新字典并添加到列表中,最终得到的是多个字典的集合。要实现预期效果,需要初始化一个包含空列表的字典,然后将每个助攻值追加到该列表里:

# 初始化带空列表的字典
players_stats = {"Assists per game": []}
players_game_stats_url = "https://balldontlie.io/api/v1/stats?season[]=2018&player_ids[]=237"
result = requests.get(players_game_stats_url).json()

# 遍历每场比赛数据,将助攻值追加到列表中
for game_stats in result['data']:
    players_stats["Assists per game"].append(game_stats['ast'])

这样修改后,players_stats就会成为你期望的格式:单个字典,键为Assists per game,值是所有比赛助攻数组成的列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:05:31