2016-10-04 25 views
-2

Ich bin mir nicht sicher, ob dies der richtige Titel für das ist, was ich tun möchte, aber ich habe eine Liste auf der gleichen Ebene und möchte "VLAN" als oberste Ebene und " Name "als Attribut. Unten ist die Liste.Python ein Array aus dem Wörterbuch erstellen

Code zum Erstellen eines Wörterbuchs. Nicht sicher, ob ich das tun muss.

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

Ausgabe

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

Die Antwort markiert als Antwort wird in dieser Situation arbeiten. Könnte diese Leistung auch erreicht werden?

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

Bitte klären Sie, was Sie erwarten * als Ausgabe. – deceze

+0

Dies ist nicht ein einzelnes Wörterbuch erstellen, sondern eine Liste von Wörterbüchern – e4c5

+0

Es ist ein wenig unklar, was die eigentliche Frage ist. Wissen Sie nicht, wie Sie die Ergebnisse in eine Liste einfügen? –

Antwort

0

Nicht sicher, was Sie suchen, ist so hier eine Vermutung:

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] 

Dies erzeugt {'vlan 1': 'name default', 'vlan 2': 'name non-default'} Ist es das, was Sie gemeint von:

use "vlan" als oberste Ebene und "Name" als Attribut

EDIT: Als Nachsatz, vielleicht wollten Sie "VLAN" und "Name" überall loswerden. Hier ist ein Weg, dies zu tun.

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 

Dies erzeugt die Ausgabe:

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

Bitte beachten Sie, dass hier die vlan Zahlen Strings sind. Um sie als Ganzzahlen zu haben, konvertieren Sie sie einfach in die letzte Zeile zum Beispiel:

output[int(vlan_number)] = name 
+0

Danke! Ich war mir nicht sicher, wie ich meine Frage stellen sollte, aber die von Ihnen produzierte Ausgabe ist das, wonach ich suche. – user2009169

Verwandte Themen