Problem:Get Ebene der Elemente in einer verschachtelten Liste
Ich habe einige Daten verknüpft und ich möchte eine Struktur wie diese auf diesem Bild bauen:
und erhalten die Level jedes Artikels, weil ich in der Zukunft einige Berechnungen anstellen werde, indem ich auf die unterste Ebene meiner Baumstruktur starre.
Erwartetes Ergebnis:
Ich brauche eine Struktur zu erhalten, die mir Artikel pro Ebene gibt:
- Ebene 0: A
- Ebene 1: A = B, C, D
- Stufe 2: D = E, F, G
- Stufe 3: E = H, I, J, K
was ich bisher versucht:
ich diesen rekursiven Code habe versucht, das Verhalten zu simulieren, aber ich bin nicht in der Lage Elemente die Höhe der Gegenstände zu erhalten.
dict_item = {"A": ["B","C","D"], "D": ["E","F","G"], "E":["H","I","J"]}
def build_bom(product):
if not dict_item.get(product):
return product
else :
return [build_bom(x) for x in dict_item.get(product)]
print(build_bom("A"))
Meine Ausgabe ist eine verschachtelte Liste wie folgt aus:
['B', 'C', [['H', 'I', 'J'], 'F', 'G']]
Meine Frage:
Ich bin nicht sicher, ob dies der beste Ansatz ist, um mein Problem zu behandeln. Und wie bekomme ich die gewünschte Ausgabe? hier ist die gewünschte Ausgabe:
[ {"parent_E":["H", "I", "J"]},
{"parent_D": ["E", "F", "G"]},
{"parent_A"} :["D","C","B"]},
]
Eine Liste von Wörterbüchern (wo Schlüssel sind Eltern und Werte sind Kinder), das erste Element in der Liste ist die unterste Ebene meiner Struktur und die letzte ist das höchste Element.
PS: Dies ist eine Simulation, aber in Zukunft muss ich mit diesem Code an großen Datensätzen arbeiten. Jede Hilfe wird geschätzt
„Und wie man die gewünschte Ausgabe? " Sie haben uns Ihre Ausgabe gezeigt, aber Sie haben nie erwähnt, was die "gewünschte Ausgabe" ist. Ihre Frage ist nicht klar, ob Ihre Ausgabe die gewünschte Ausgabe ist - was ist falsch an der aktuellen Vorgehensweise? – alfasin
Ich sehe den Abschnitt "erwartetes Ergebnis", aber ich sehe nicht die tatsächliche * Ausgabe * des erwarteten Ergebnisses. – alfasin
Versuchen Sie: '[{" parent_ "+ k: v} für k, v in dict_item.items()]' – alfasin