【问题标题】:how to make nested for loop print only once in python如何使嵌套的for循环在python中只打印一次
【发布时间】:2015-10-21 04:47:25
【问题描述】:

我试图让我的 for 循环只打印一次请求,但它似乎打印了两次。如何防止这种情况发生?

import json

list_1 = ['name1','name2',]
list_2 = ['1.1.1.1','2.2.2.2',]

username = 'john'
password = 'test_password'

for x in list_1:
    for y in list_2:
        x = {'device_type': 'juniper', 'ip': y, 'username': username, 'password': password, 'port': 9822,'verbose': False,}
        print (json.dumps(x, indent=1))

想要的结果

        {
 "device_type": "juniper",
 "ip": "1.1.1.1",
 "password": "test_password",
 "port": 9822,
 "verbose": false,
 "username": "john"
}
{
 "device_type": "juniper",
 "ip": "2.2.2.2",
 "password": "test_password",
 "port": 9822,
 "verbose": false,
 "username": "john"
}

【问题讨论】:

    标签: json python-3.x dictionary pretty-print


    【解决方案1】:

    那是因为内循环发生了两次。

    您有 2 个 JSON 对象,它们都有不同的 "ip" 键,我会将它们推送到循环中的数组中,然后在循环完成后打印我想要的元素,这样您就可以更好地控制什么被打印出来,如果你以后需要它,你也可以参考它。

    此外,您在这里在 2 个不同的上下文中使用变量 x,第二个 x 应该命名为其他名称。

    【讨论】:

    • 谢谢 MrHaze,你能给我举个例子吗?
    • 我会,但你不想先试试吗?
    • 尝试创建一个列表,并使用append()函数将x附加到列表中
    • 所以你想让我遍历一个列表并再次在循环内创建一个列表?我想我没有正确遵循这一点。
    • 而不是您的印刷品,只需将它们全部放在一个列表中即可。循环后打印列表[0]
    【解决方案2】:

    这给了我想要的东西

    import json
    import itertools
    
    list_1 = ['name1','name2',]
    list_2 = ['1.1.1.1','2.2.2.2',]
    
    username = 'john'
    password = 'test_password'
    
    for x, y  in zip(list_1,list_2):
        x = {'device_type': 'juniper', 'ip': y, 'username': username, 'password': password, 'port': 9822,'verbose': False,}
        print (json.dumps(x, indent=1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-04
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多