2016-10-26 9 views
-1

IMüssen mehrere Liste von Tupeln in einem verschachtelten Wörterbuch konvertieren

a=[[('key_1', '1'), ('key_1', '2'), ('key_1', '3')], 
    [('key_2', '4'), ('key_2', '5'), ('key_2', '6')], 
    [('key_3', '7'), ('key_3', '8'), ('key_3', '9')]] 

Ich muss die oben aufgeführte Liste konvertieren Wörterbuch als unter Python mit

{'key_2' : { '4' : {'key_1':'1','key_3':'7'}}, 
      '5' : {'key_1':'2','key_3':'8'}}, 
      '6' : {'key_1':'3','key_3':'9'}}} 

Meine eine Liste von Tupeln, wie unten haben Code ist wie unten

d1={} 
d2={} 
d3={} 
b=a.pop(1) 
for i in b: 
    d1[i[0]]=d2 
    d1[i[0]][i[1]]=d3 
    for j in a: 
     for k in j: 
      d1[i[0]][i[1]][k[0]]=k[1] 

pprint.pprint(d1) 

Aber ich bin immer,

{'key_2': {'4': {'key_1': '3', 'key_3': '9'}, 
      '5': {'key_1': '3', 'key_3': '9'}, 
      '6': {'key_1': '3', 'key_3': '9'}}} 

statt

{'key_2' : { '4' : {'key_1':'1','key_3':'7'}}, 
      '5' : {'key_1':'2','key_3':'8'}}, 
      '6' : {'key_1':'3','key_3':'9'}}} 

Wie dieses Wörterbuch bekommen?

+0

Haben Sie einen Beispielcode? Weil ich nicht glaube, dass die Art und Weise, wie Sie versuchen, die Liste zu erstellen, gültig ist. – JClarke

+1

Die beiden Datenstrukturen, die Sie dort definiert haben, sind nicht syntaktisch gültig. Könnten Sie sich bitte anpassen? – sytech

+0

Diese Frage ist seit Ihrer letzten Anfrage nicht mehr klar geworden. –

Antwort

0
d = {} 
map(lambda x:map(lambda (y,z):d.setdefault(y,[]).append(z),x),a) 


d1 = {} 
for n,i in enumerate(d['key_2']): 
    b = [] 
    for j in a: 
     if j[n][0] != 'key_2': 
      b.append(j[n]) 
    d1.update({i:dict(b)}) 

print {'key_2':d1} 
+0

Danke. Aber der Code funktioniert nicht. Was bezeichnen Sie mit "c [n]"? Ich habe keine Variable als "c" – Alex

+0

Dieser Code funktioniert nicht. Kannst du bitte die Ausgabe auch mit diesem Code ausdrucken? – Alex

Verwandte Themen