2016-10-04 2 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"属性として「トップレベル」と「名前」を指定します。

EDIT:補足として、多分あなたはどこでも "vlan"と "name"を取り除きたいかもしれません。これを行う方法があります。

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

関連する問題