通过遍历字符串列表生成python嵌套字典

通过遍历字符串列表生成python嵌套字典,python,Python,我对python编程非常陌生,并尝试动态生成一个字典来为我的脚本解析它。为此,我必须遍历字符串列表,并将其用作字典来填充进一步的值。在下面的示例中,我得到了一个经过计算的字符串“ip_1”,这必须是一个字典,我需要在它上面填充一些键、值对 d = {} vlan_start = 1001 no_of_vlans = 10 start = [1,2,3,4] for i in range(vlan_start,vlan_start+no_of_vlans): d[i]={} f

我对python编程非常陌生,并尝试动态生成一个字典来为我的脚本解析它。为此,我必须遍历字符串列表,并将其用作字典来填充进一步的值。在下面的示例中,我得到了一个经过计算的字符串“ip_1”,这必须是一个字典,我需要在它上面填充一些键、值对

d = {}
vlan_start = 1001
no_of_vlans = 10
start = [1,2,3,4]


for i in range(vlan_start,vlan_start+no_of_vlans):
    d[i]={}
    for j in start:
        a = 'ip'+ '_' + str(j)  
        c = dict(a={})
        print(c)
我得到的输出是:
{'a':{}
而预期的输出是:
{'ip_1':{}

最终输出应该是这样的

d = {1001:{'ip_1':{},'ip_2':{},'ip_3':{},'ip_4':{}},1002:{'ip_1':{},'ip_2':{},'ip_3':{},'ip_4':{}}

很高兴你找到了一个让它工作的方法

使用dict理解表达式的更简洁的解决方案是:

vlan\u start=1001
没有\u个VLAN=10个
vlan_开始=1001
没有\u个VLAN=10个
ips={f“ip_{ip}”:{}表示范围(1,5)内的ip}
d={
vlan:范围内vlan的IP(vlan\U开始,vlan\U开始+无vlan)
}
断言d=={
1001:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1002:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1003:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1004:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1005:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1006:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1007:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1008:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1009:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
1010:{“ip_1”:{},“ip_2”:{},“ip_3”:{},“ip_4”:{},
}

您可能想查看有关dict理解的教程,例如。

Why-1?这个问题怎么了。解释啊*!大括号中需要哪些值?如中所述,“如果给定了关键字参数,则关键字参数及其值将添加到根据位置参数创建的词典中”。换句话说,正如文档中的示例所示,
dict(a={})
的预期结果是
{'a':{}}
。这个故事的寓意是:阅读你正在使用的东西的文档,不要只是期待。