2017-03-08 4 views
0

Ich habe ein Problem, das ich versucht habe, aussortieren. Ich habe eine Zeichenfolge, die in ein verschachteltes Wörterbuch mit den Schlüsseln und den Werten, die auf den angrenzenden Wörtern in der Zeichenfolge basieren, konvertiert werden muss. Hier ein Beispiel:Erstellen Sie rekursiv ein verschachteltes Wörterbuch aus der Zeichenfolge

graphMaster = {} 
inputSentence = "I have a dog named Max." 

Ich möchte diese Zeichenfolge nehmen, und wandeln sie in einem Wörterbuch ähnelt die Ausgabe unter:

print graphMaster 
{'I': {'have': {'a': {'dog': {'named': 'Max'}}}}} 

Ich habe versucht, die folgenden:

graphMaster = {} 
inputSentence = "I have a dog named Max." 
while True: 
    inputList = inputSentence.strip().split(' ') 
    for currentIndex, word in enumerate(inputList): 
     nextIndex = currentIndex + 1 
     if nextIndex < len(inputList): 
      if word not in graphMaster.keys(): 
       graphMaster[word] = inputList[nextIndex] 
      elif word in graphMaster.keys(): 
       break 
print graphMaster 

Ich konnte hier kein doppeltes Problem finden und ich entschuldige mich, falls es eines gibt, das ich nicht finden konnte. Jede Hilfe wird sehr geschätzt.

+1

Der einzige Unterschied zwischen dem und dem Betrogenen (vor 3 Stunden ... (_same class?;) _)) Ist, dass Sie Ihre Liste aufteilen müssen, und keinen Initialisierer verwenden. Etwas wie 'reduzieren (Lambda x, y: {y: x}, umgekehrt (inputSentence.strip ('.'). Split()))'. Es gibt auch eine Nicht-'Reduce'-Lösung. Ich gehe auch davon aus, dass Sie keine Rekursion benötigen, da Sie dies nicht versuchen. – miradulo

Antwort

0

Man könnte so etwas tun:

outdict = {} 
curdict = outdict 
for f in inputSentence.split(' '): 
    curdict[f] = {} 
    curdict = curdict[f] 
print outdict 

Wo curdict nur in der Ausgabe-Wörterbuch auf einen Ort zeigt.

Verwandte Themen