我有一个 for 循环,它正在遍历包含许多嵌套字典的字典。当循环到达一个没有我正在寻找的密钥的条目时,它会停止。我如何让它继续处理所有其余的数据?
在我的代码中,循环很好地完成了游戏。 当我尝试获取所有游戏 ['odds'] 时,如果一场比赛没有赔率键,则循环停止,这最终给我一个关键错误并且只打印出前四场比赛。
results = requests.request("GET", url, headers=headers).json()
games = results['results']
for game in games:
spread = game['odds']
for line in spread:
points = line['spread']['current']['home']
print(points)
答案 0 :(得分:1)
将 spread = game['odds']
替换为 spread = game.get('odds',[])
,以便 spread
在没有“odds”键时获得一个空列表,并且其余代码将正确运行。
答案 1 :(得分:0)
我将假设它停止是因为 results = requests.request("GET", url, headers=headers).json()
games = results['results']
for game in games:
if(game['odds']):
spread = game['odds']
for line in spread:
points = line['spread']['current']['home']
print(points)
在这里,您有两个选择来克服它。
dict().get()
KeyError
d = {}
d.get('foo') #Returns None
方法很方便,因为如果指定的键不存在,那么它将简单地返回 None。在您不想处理从天而降的错误的地方使用。
尝试除外
稍微复杂一些。
.get()
这将侦听错误,然后在发生错误时执行一些代码
try:
raise ValueError('ya goofed m8')
except ValueError:
print('How the tables have turned...')
是您要侦听错误的代码。
try
是错误代码。
答案 2 :(得分:-1)
尝试这样做:
__built-in-schema.yml (Line: xx, Col: yy): 'variables' is already defined