如何遍历JSON中的球员ID提取timeOnIce?解决代码下标错误
问题解决:提取球员上场时间报错修正
你的代码触发"'int' object is not subscriptable"错误,原因有两点:
- 第二个循环用
range(len(...))生成的j是整数索引,你试图对整数使用下标j['stats'],这不符合语法规则 - 从JSON结构来看,
players是字典类型(键为球员ID,值为包含球员数据的对象),并非列表,用索引遍历的方式完全不适用
修正后的代码(获取所有球员上场时间的一维列表)
toi = [] # 遍历每一场比赛的数据 for game in game_data_1: # 获取主场球队的球员字典 home_players = game['liveData']['boxscore']['teams']['home']['players'] # 遍历字典中的每个球员数据对象 for player_data in home_players.values(): toi.append(player_data['stats']['skaterStats']['timeOnIce'])
进阶需求:按场次分组的二维时间列表
如果需要得到每场比赛独立的球员上场时间列表(二维列表,每个子列表对应单场比赛的主场球员数据),可以用以下代码:
toi_per_game = [] for game in game_data_1: home_players = game['liveData']['boxscore']['teams']['home']['players'] single_game_toi = [] for player_data in home_players.values(): single_game_toi.append(player_data['stats']['skaterStats']['timeOnIce']) toi_per_game.append(single_game_toi)
内容的提问来源于stack exchange,提问作者kobea14
相关产品推荐
相关产品推荐

