循环遍历python中的嵌套字典
我希望循环浏览以下json字典:循环遍历python中的嵌套字典,python,json,Python,Json,我希望循环浏览以下json字典: hgetjsonObject = { u 'jsonrpc': u '2.0', u 'result': [{ u 'hosts': [{ u 'status': u '0', u 'hostid': u '10394', u 'name': u 'vsclap01l' }, { u 'status': u '0',
hgetjsonObject = {
u 'jsonrpc': u '2.0', u 'result': [{
u 'hosts': [{
u 'status': u '0',
u 'hostid': u '10394',
u 'name': u 'vsclap01l'
}, {
u 'status': u '0',
u 'hostid': u '10395',
u 'name': u 'vsclap03l'
}, {
u 'status': u '0',
u 'hostid': u '10396',
u 'name': u 'vscldb04l'
}],
u 'groupid': u '4',
u 'name': u 'Zabbix servers'
}], u 'id': 2
}
以下是我迄今为止所尝试的:
print(hgetjsonObject['result'][0]['hosts'][0])
但当我运行它时,它会中止以下操作:
{u'status': u'0', u'hostid': u'10394', u'name': u'vsclap01l'}
Traceback (most recent call last):
File "./automaton.py", line 341, in <module>
print(hgetjsonObject['result'][0]['hosts'][0])
IndexError: list index out of range
运行for循环时,会出现错误。要访问
主机
键,请按以下方式迭代:
>>> for eachhost in hgetjsonObject['result'][0]['hosts']:
print(eachhost["hostid"], eachhost["name"])
('10394', 'vsclap01l')
('10395', 'vsclap03l')
('10396', 'vscldb04l')
我看到两个问题。
1) u和字典中的字段之间有空格,这将导致问题
2) 因为结果是一个列表,而在该主机下是另一个列表,所以您应该遍历这两个列表
for eachresult in hgetjsonObject['result']:
for eachhost in eachresult['hosts']:
print(eachhost['hostid'],eachhost['name'])
输出:
10394 vsclap01l
10395 vsclap03l
10396 vscldb04l打印(每个主机['hosts'][0][“hostid”],每个主机['hosts'][0][“name”])
打印(hgetjsonObject['result'][0]['hosts'][0])
运行时没有任何错误。你能给我们看看文件automaton.py
for eachresult in hgetjsonObject['result']:
for eachhost in eachresult['hosts']:
print(eachhost['hostid'],eachhost['name'])