繁体   English   中英

Python for 循环只返回第一个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM