[英]Python - Json data prints but also gives KeyError
我正在尝试从从多个 URL 中提取的 JSON 数据中提取特定的密钥,我正在成功地执行此操作,但是,在数据打印之后,我出于某种原因得到了 KeyError,这令人困惑,因为数据正在打印...... ..见下面的代码;
for url in URLs:
data = requests.get(url, cookies=cookies, verify=False).json()
notifications = data["notifications"]
for notification in notifications:
if notification["updates"].get("inDiscards", "outDiscards"):
outDiscards = notification["updates"]["outDiscards"]["value"]["avg"]["float"]
inDiscards = notification["updates"]["inDiscards"]["value"]["avg"]["float"]
print(outDiscards, inDiscards)
我正在尝试提取 InDiscards 和 OutDiscards 的 AVG 浮点数
json数据如下:
{
"notifications": [
{
"timestamp": "15002302302",
"path_elements": [
"Devices",
"AAX1238128318",
"versioned-data",
"interfaces",
"data",
"Ethernet2",
"aggregate",
"rates",
"1m"
],
"updates": {
"alignmentErrors": {
"key": "alignmentErrors",
"value": {
"avg": {
"float": 0
},
"max": {
"float": 0
},
"min": {
"float": 0
},
"stddev": {
"float": 0
},
"weight": {
"float": 1
}
}
},
"inDiscards": {
"key": "inDiscards",
"value": {
"avg": {
"float": 0
},
"max": {
"float": 0
},
"min": {
"float": 0
},
"stddev": {
"float": 0
},
"weight": {
"float": 1
}
}
},
"outDiscards": {
"key": "outDiscards",
"value": {
"avg": {
"float": 0
},
"max": {
"float": 0
},
"min": {
"float": 0
},
"stddev": {
"float": 0
},
"weight": {
"float": 1
}
}
},
见终端output:
0 0
Traceback (most recent call last):
line 26, in <module>
outDiscards = notification["updates"]["outDiscards"]["value"]["avg"]["float"]
KeyError: 'outDiscards'
如您所见, 0,0 打印正确但有错误
如果存在notification["updates"].get("inDiscards", "outDiscards")
则产生notification["updates"]["inDiscards"]
的值,否则产生 "outDiscards "outDiscards"
的值,而不是(如您所料)两者都存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.