2016-10-04 116 views
-2

我不确定这是否是我想要做的正确标题,但是,我在同一级别上有一个列表,并且希望使用“vlan”作为顶层,而“名称“作为属性。以下是列表。Python从字典中创建一个数组

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 

创建字典的代码。不知道我是否需要这样做。

for v in vlans: 
    type = v.split(" ") 
    value = dict([(type[0], type[1])]) 
    print(value) 

输出

{'vlan': '1'} 
{'name': 'default'} 
{'vlan': '2'} 
{'name': 'non-default'} 

答复标记为答案将在这种情况下工作。这个输出是否也可以实现?

{ 
    "vlan 1":{ 
     "name": "default" 
    }, 
    "vlan 2":{ 
     "name": "non-default" 
    }  
} 
+3

请澄清* *期望*作为输出。 – deceze

+0

这不是创建一个字典,而是一个字典列表 – e4c5

+0

这个问题实际上有点不清楚。你不知道如何将结果附加到列表中? –

回答

0

不知道你在找什么,所以这里有一个猜测:

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 
output = {} 

for i in range(len(vlans)/2): 
    output[vlans[2*i]] = vlans[2*i + 1] 

这将产生{'vlan 1': 'name default', 'vlan 2': 'name non-default'} 是不是你的意思:

使用 “VLAN”作为顶级和“名称”作为属性

编辑:作为事后的想法,也许你想摆脱“vlan”和“名字”到处都是。这是一种方法来做到这一点。

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 
output = {} 

for i in range(len(vlans)/2): 
    vlan_number = (vlans[2*i].split())[1] 
    name = (vlans[2*i + 1].split())[1] 
    output[vlan_number] = name 

这将产生输出:

{'1': 'default', '2': 'non-default'} 

请注意,这里的VLAN号是字符串。要将它们作为整数,只需将它们转换为最后一行,例如:

output[int(vlan_number)] = name 
+0

谢谢!我不确定如何提问我的问题,但是您制作的输出是我正在寻找的。 – user2009169