ich versuche einen Baum Sequenziell abzuarbeiten und bekomme den irgendwie nicht sortiert. Ich hab mal ein Beispielbild von meinem Baum hochgeladen
Er besteht als in dem Fall aus 9 verschiedenen Queries die ich wie schon gesagt habe sequenziell durcharbeiten will. Meine Idee war, fang mit den kürzesten an und gebe die Ergebnisse an den nächst längeren weiter.
Die Reihenfolge wäre dann
Um das hin zu bekommen hab ich mir mehrere Gedanken gemacht, unter anderem, welcher Knoten hat welche Kinder, wieviele Nachfahren und so weiter.1 -> 9 -> 7 -> 8 -> 2 -> 6 -> 3 -> 4 -> 5
Hab dann mal eine Liste von Dictonarys zusammen gebaut, die die Information trägt, jetzt bekomme ich das aber nicht sortiert.
Code: Alles auswählen
list = [{'childs': [1, 2, 7, 9], 'offsprings': 7, 'parent': None, 'lig_in_cav': '90', 'cav_in_lig': '90', 'query_number': 0},
{'query_number': 1, 'childs': [], 'offsprings': 0, 'parent': 0, 'level': '1'},
{'query_number': 2, 'childs': [3, 6], 'offsprings': 4, 'parent': 0, 'level': '1'},
{'query_number': 3, 'childs': [4, 5], 'offsprings': 2, 'parent': 2, 'level': '2'},
{'query_number': 4, 'childs': [], 'offsprings': 0, 'parent': 3, 'level': '3'},
{'query_number': 5, 'childs': [], 'offsprings': 0, 'parent': 3, 'level': '3'},
{'query_number': 6, 'childs': [], 'offsprings': 0, 'parent': 2, 'level': '2'},
{'query_number': 7, 'childs': [8], 'offsprings': 1, 'parent': 0, 'level': '1'},
{'query_number': 8, 'childs': [], 'offsprings': 0, 'parent': 7, 'level': '2'},
{'query_number': 9, 'childs': [], 'offsprings': 0, 'parent': 0, 'level': '1'}]
Das sind die Infos die ich bis jetzt hab. Habe danach mit sortieren folgendes versucht:
Code: Alles auswählen
sortlist1 = sorted(list[:], key=lambda n: n.get('offsprings', '0'))
sort_query_list = sorted(sortlist1, key=lambda n: n.get('level', '0'))
was ich jetzt versuchen wollte ist zu testen, ob kinder vorhanden sind, wenn diese vorhanden sind schauen wieviele nachfahren sie haben und dann eben in einer neuen liste die richtige reihenfolge zu speichern.
in meiner liste sind ja immer listen der kinder vorhanden und diese nr passt genau auf den index der list variablen, wenn man also querynr2 anschaut dann hat die in childs [3,6] was dann genau auf list[4] und list[6] passt.
ist denke ich zu verstehen, oder?
ich bekomme aber einfach diese funktion nicht an den sort befehl konzipiert... hat da jemand eine idee oder vielleicht eine bessere vorgehensweise?
ich müsste praktisch list[3]['offsprings'] mit list[6]['offsprings'] vergleichen