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

时间:2020-01-29 17:19:17

标签: 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]={}
    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':{}}

1 个答案:

答案 0 :(得分:0)

很高兴您找到了使其正常工作的方法!

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

vlan_start = 1001
no_of_vlans = 10

vlan_start = 1001
no_of_vlans = 10

ips =  {f"ip_{ip}": {} for ip in range(1,5)}
d = {
    vlan: ips for vlan in range(vlan_start, vlan_start + no_of_vlans)
}

assert 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理解的教程,例如https://www.datacamp.com/community/tutorials/python-dictionary-comprehension