2016-10-04 71 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