Python抓取ESPN FF梦幻橄榄球数据报KeyError:'away'错误如何解决
问题原因
ESPN 梦幻橄榄球的赛程接口返回的schedule列表中,并非所有对阵条目都同时存在away和home字段:
- 轮空周(bye week)的条目只会记录单支球队信息
- 未最终确定的季后赛对阵也可能缺失其中一个字段
你之前检查字典时只查看了部分正常对阵数据,没有遍历全所有schedule条目,才会误以为所有条目都存在away键。
排查方法
先运行以下代码定位异常条目:
for idx, game in enumerate(d['schedule']): if 'away' not in game or 'home' not in game: print(f"索引{idx}的对阵数据异常,内容:{game}")
修复方案
方案1:过滤异常条目(仅保留完整对阵数据)
修改列表推导式,增加字段存在性判断:
df = [[ game['matchupPeriodId'], game['away']['teamId'], game['away']['totalPoints'], game['home']['teamId'], game['home']['totalPoints'] ] for game in d['schedule'] if 'away' in game and 'home' in game]
方案2:保留所有条目,缺失字段填空值
用dict.get()方法设置缺省值,避免键不存在报错:
df = [[ game['matchupPeriodId'], game.get('away', {}).get('teamId'), game.get('away', {}).get('totalPoints'), game.get('home', {}).get('teamId'), game.get('home', {}).get('totalPoints') ] for game in d['schedule']]
内容的提问来源于stack exchange,提问作者aharwell
相关产品推荐
相关产品推荐

