在您的代码中出现问题的地方在于定义球员姓名### (playerName)的那一行的缩进。具体来说,问题出现在以下部分:
for competitor in competition['competitors']:
athlete = competitor['athlete']
playerName = athlete['displayName']
# 创建一个包含比赛数据的字典
game = {
'game_id': game_id,
'date': date,
'name': name,
'playerName': playerName
}
换句话说,用于创建游戏字典的代码块位于遍历竞争对手的循环外部。这意味着playerName
只会取到最后一个竞争对手的值。
要修复这个问题,您需要调整代码缩进来确保字典创建的操作在遍历competition['competitors']
的for循环内执行。以下是修正后的示例:
# 遍历每个事件并获取相关的信息
for event in events:
# 获取比赛ID、日期、状态和赛事名称
game_id = event['id']
date = event['date']
name = event['name']
for competition in event['competitions']:
for competitor in competition['competitors']:
athlete = competitor['athlete']
playerName = athlete['displayName']
# 根据当前竞争对手创建一个包含比赛数据的字典
game = {
'game_id': game_id,
'date': date,
'name': name,
'playerName': playerName
}
# 将该字典追加到游戏列表中
games.append(game)
通过这样的修改,对于每个竞争对手都会创建一个### game字典,从而确保最终列表中包含了所有的参赛球员。