为什么我的 for 循环在循环完成之前停止?

时间:2021-03-06 19:31:39

标签: python dictionary for-loop

我有一个 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)

3 个答案:

答案 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