Rekursion über verschachtelten Objekt-Baum
Verfasst: Dienstag 25. Juli 2006, 14:51
Greetings!
Ich hab hier einen verschachtelten Baum von Themen und Unterthemen. Natürlich kann jedes Thema auch mehrere Unterthemen beinhalten. Ich möchte eine Funktion, die mir für jedes Thema ein verschachteltes Dictionary mit der gesamten Themenhierarchie zurückgibt. Das ganze stell ich mir ungefähr so vor:
Meine Lösung ist folgende rekursive Funktion:
Irgendwie kommt mir das ganze aber holprig und unelegant vor. Da jetzt ein ähnliches Problem vor mir liegt (Links- und Rechtswerte für jedes topic, sprich: die ganze Hierarchie als Nested Set), frag ich mich, ob das ganze nicht auch eleganter geht, bevor ich's wieder auf ähnliche Art und Weise zusammenschuster. Aber irgendwie blockiert die Hitze mein Denkvermögen. Kann mir mal irgendwer Luft zufächeln oder zumindest gedanklich auf die Sprünge helfen?
P.S.: JFTR, ich beschwer mich keineswegs über das geile Wetter, nur arbeiten müsst halt jetzt nicht unbedingt sein.
Ich hab hier einen verschachtelten Baum von Themen und Unterthemen. Natürlich kann jedes Thema auch mehrere Unterthemen beinhalten. Ich möchte eine Funktion, die mir für jedes Thema ein verschachteltes Dictionary mit der gesamten Themenhierarchie zurückgibt. Das ganze stell ich mir ungefähr so vor:
Code: Alles auswählen
>>> n = topic('Nahrung')
>>> n.addSubtopic('Essen')
>>> n.addSubtopic('Trinken')
>>> n.subtopics['Essen'].addSubtopic('Proteine')
>>> n.getTopicTree()
{'Nahrung': {'Essen': {'Proteine': {}}, 'Trinken': {}}}
Code: Alles auswählen
def getTopicTree(self, root=True):
subs = {}
for i in self.subtopics.keys():
subs[i] = self.subtopics[i].getTopicTree(False)
if root:# Only in the initial call of the recursion, we add another 'root'-Level
subs = {self.name:subs}
return subs
P.S.: JFTR, ich beschwer mich keineswegs über das geile Wetter, nur arbeiten müsst halt jetzt nicht unbedingt sein.