Python KeyError if logic或try logic

Python KeyError if logic或try logic,python,python-3.x,dictionary,keyerror,Python,Python 3.x,Dictionary,Keyerror,我正在尝试循环一些JSON数据以导出到CSV,并且一切都进行得很顺利,直到我得到了我需要的数据的一部分,以获得某些字段值,而这些字段并不总是存在于“标记”下面 我得到的错误是: for alarm in tag["alarmst"]: KeyError: 'alarmst' 从阅读中我相信这意味着键/字段根本不存在 我读到,我可以把这个逻辑放在一个try语句中,意思是说,如果这个键不存在,不要告诉我错误并做其他事情,或者移动到“tag”下面的下一组记录,其中“alarmst”是,

我正在尝试循环一些JSON数据以导出到CSV,并且一切都进行得很顺利,直到我得到了我需要的数据的一部分,以获得某些字段值,而这些字段并不总是存在于“标记”下面

我得到的错误是:

for alarm in tag["alarmst"]:
        KeyError: 'alarmst'
从阅读中我相信这意味着键/字段根本不存在

我读到,我可以把这个逻辑放在一个try语句中,意思是说,如果这个键不存在,不要告诉我错误并做其他事情,或者移动到“tag”下面的下一组记录,其中“alarmst”是,只需将它(以及指定的其他字段)转储到文件中

我不知道如何告诉这个逻辑停止给我这个错误,并且在只有“alarmst”存在的情况下,只对所有字段值使用
csv\u file.writerow()
函数

因为我将使用一个文件和进程,然后运行这个Python进程将“devs”和“tags”获取到它们自己的CSV文件,所以我无法解析数据并减少另一个for循环中的for循环

我不确定标记:中的
if标记[“alarmst”]的问题是否是由于其他标记中存在太多for循环,或者我是否需要使用try语句来代替,或者我只是没有正确地执行其他操作,因为我对Python在这一级别的编码还不熟悉,但到目前为止它似乎满足了需要

如果这有什么不同的话,我会在Windows10操作系统上运行它,但我想不会

起始代码: 如果代码:
标记[“alarmst”]
是引发错误的原因。这意味着从与键
“alarmst”
关联的
标记中获取值,但没有这样的键,因此失败<代码>如果标记
中的标记【“alarmst”】将抛出相同的错误,而且如果标记【“alarmst”】中的报警低于
,您甚至无法到达该点。你想要的是:

if "alarmst" in tag:
    for alarm in tag["alarmst"]:
但更好的是:

for alarm in tag.get("alarmst", []):
get
与通常的方括号访问类似,但如果找不到键,则第二个参数是默认参数。因此,如果字典中没有“alarmst”
,则基本上是:

for alarm in []:
这只是一个根本不会运行的空循环。

标记[“alarmst”]
是引发错误的原因。这意味着从与键
“alarmst”
关联的
标记中获取值,但没有这样的键,因此失败<代码>如果标记
中的标记【“alarmst”】将抛出相同的错误,而且如果标记【“alarmst”】中的报警低于
,您甚至无法到达该点。你想要的是:

if "alarmst" in tag:
    for alarm in tag["alarmst"]:
但更好的是:

for alarm in tag.get("alarmst", []):
get
与通常的方括号访问类似,但如果找不到键,则第二个参数是默认参数。因此,如果字典中没有“alarmst”,则基本上是:

for alarm in []:

这只是一个根本不会运行的空循环。

您有一个输入错误:
alarmSt
应该是
alarmSt
?您有一个输入错误:
alarmSt
应该是
alarmSt