[英]Python for loop returns only the first value
我正在尝试从 JSON 中检索值,但我的 for 循环多次只获取第一个值:
我正在使用以下 for 循环:
def get_nodeid1():
url='https://%s/api/node/class/fabricNode.json' % apic
response = requests.get(url, cookies=session_cookie, timeout=2, verify=False)
json_data = json.loads(response.text)
node_id = json_data['imdata'][0]['fabricNode']['attributes']['name']
for node in node_id:
m1 = json_data['imdata'][0]['fabricNode']['attributes']['name']
m2 = json_data['imdata'][0]['fabricNode']['attributes']['serial']
m3 = json_data['imdata'][0]['fabricNode']['attributes']['address']
print(f"Node ID: {m1} Serial: {m2} Address: {m3}")
结果是第一个条目的 7 倍:
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
Node ID: LEAF101 Serial: FDO21230U65 Address: 10.1.152.66
我猜你想遍历json_data['imdata']
。 您的原始代码从不引用循环中的节点。 尝试这个:
def get_nodeid1():
url='https://%s/api/node/class/fabricNode.json' % apic
response = requests.get(url, cookies=session_cookie, timeout=2, verify=False)
json_data = json.loads(response.text)
for node in json_data['imdata']:
m1 = node['fabricNode']['attributes']['name']
m2 = node['fabricNode']['attributes']['serial']
m3 = node['fabricNode']['attributes']['address']
print(f"Node ID: {m1} Serial: {m2} Address: {m3}")
您实际上是在遍历字符串“LEAF101”的 7 个字符。 此外,您没有在循环块中的任何地方使用“节点”变量。
您可能希望在 json_data 中迭代更高级别的 dict,然后在访问从属变量时使用节点变量作为键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.