如何从NHL API的gameLog字典中提取统计值并计算均值?
问题解决:NHL API比赛日志数据提取错误
你的代码存在三个核心问题,导致始终返回0:
循环变量逻辑错误
外层循环for key in player_data_json['gameLog']中,key实际是每个比赛的完整字典对象,不是字典的键名。后续判断if key == 'goals'是拿整个字典和字符串比较,永远不会成立,自然不会执行累加操作。不必要的内层循环
不需要遍历字典的所有键,直接通过字典键名(如game['goals'])就能获取对应比赛的进球数,完全可以跳过内层循环。累加变量初始化位置错误
goals = 0放在外层循环内部,每次循环都会重置累加值为0,即使有有效数据也无法累计。
修正后的代码
# 初始化总和变量(必须放在循环外) total_goals = 0 total_points = 0 # 获取有效比赛场次 game_count = len(player_data_json['gameLog']) # 遍历每场比赛的日志数据 for game in player_data_json['gameLog']: # 用get方法避免键不存在时报错,默认值设为0 total_goals += game.get('goals', 0) total_points += game.get('points', 0) # 计算均值(处理无比赛数据的边界情况) avg_goals = total_goals / game_count if game_count > 0 else 0 avg_points = total_points / game_count if game_count > 0 else 0 # 输出结果 print(f"总进球数: {total_goals}, 场均进球: {avg_goals:.2f}") print(f"总得分: {total_points}, 场均得分: {avg_points:.2f}")
内容的提问来源于stack exchange,提问作者Nick Tetzlaff
相关产品推荐
相关产品推荐

