2016-08-19 4 views
-5

Wie unten an ihre grundlegenden Tasten, um die Elemente der Listen im Wörterbuch abzubilden (dh grundlegende Tasten sind diejenigen, die Listen leer Karte zu)Wörterbuch Transformation

{ 
'1':[], 
'2':[], 
'3':['1','2'], 
'4':[], 
'5':[], 
'6':['4','5'], 
'7':['3','6'] 
} 

, die zur Folge hätte

{ 
'1':[], 
'2':[], 
'3':{'1':[],'2':[]}, 
'4':[], 
'5':[], 
'6':{'4':[],'5':[]}, 
'7':{'3':{'1':[],'2':[]},'6':{'4':[],'5':[]}} 
} 

Ich denke, dass es mit einer rekursiven Funktion erreicht werden kann.

+1

Bitte teilen Sie Ihren Code und Fehler falls vorhanden. –

+1

Ich denke, es könnte wahrscheinlich auch so erreicht werden. Machen wir das! Sie beginnen. –

+0

Bitte überprüfen Sie diesen Link http://stackoverflow.com/help/how-to-ask –

Antwort

-1

Mein Verständnis ist, dass Sie Werte wie ['1', '2'] zu dict wie {'1': [], '2': []} konvertieren möchten.

Sie wissen nicht, warum:

'6':['4','5'], 
'7':['3','6'] 

Gibt:

'6':{'4':[],'5':[]}, 
'7':{'3':{'1':[],'2':[]},'6':{'4':[],'5':[]}} 

aber nicht:

'6':{'4':[],'5':[]}, 
'7':{'3': [], '6': []} 

?

Rekursion ist nicht notwendig, aber Sie können ein Wörterbuch in Verständnis verwenden:

import pprint 

a = { 
'1':[], 
'2':[], 
'3':['1','2'], 
'4':[], 
'5':[], 
'6':['4','5'], 
'7':['3','6'] 
} 

b = {k: {i: [] for i in v} for k, v in a.items()} 

pprint.pprint(b) 

Sie erhalten:

{'1': {}, 
'2': {}, 
'3': {'1': [], '2': []}, 
'4': {}, 
'5': {}, 
'6': {'4': [], '5': []}, 
'7': {'3': [], '6': []}} 
+1

Das ist nicht einmal nahe am gewünschten Ergebnis. –

0

Um Ihnen den Einstieg würde ich etwas entlang dieser Linie vor.

Jedes Mal, wenn die Funktion aufgerufen wird, prüft sie, um was für einen Objekttyp es sich handelt, und ändert dann die Werte nach Bedarf. Mit diesem sollten Sie sich eine Vorstellung von der Route machen können, die Sie nehmen möchten, probieren Sie es aus.