Meine Problemaussage ist, dass ich eine Suchabfrage habe und das Wörterbuch zurückgeben muss, das mit der Abfrage übereinstimmt, die die Hierarchie verwaltet.Rekursives Durchsuchen des Wörterbuchs, das den vollständigen Mietversuch zurückgibt
Ich bin in der Lage, die erste zu erreichen. Aber ich möchte die vollständige Hierarchie zurückzukehren rechts aus starten, wie unten
Erhalten dieser Ausgabe:
{"Name":"google search","items":[],"properties":{"id":1,"process":123}
Erwartete Ausgabe:
{
"items":[
{'Name':'chrome','items':
[
{"Name":"google search","items":[],"properties":{"id":1,"process":123}}
]
},
]
}
Das ist mein Abtastwerteingang:
myinput = {
"items":[
{'Name':'firefox','items':[],"properties":{"one":1,"two":2}},
{'Name':'chrome','items':[
{'Name':"stackoverflow","items":[],"properties":{"one":1,"two":2}},
{"Name":"google search","items":[],"properties":{"id":1,"process":123}}
],
"properties":{"one":1,"two":2}},
{'Name':'new','items':[],"properties":{"one":1,"two":2}},
{'Name':'new','items':[],"properties":{"one":1,"two":2}},
]
}
Das habe ich bis jetzt versucht
matched_items = []
def resursive_fun(Nodes, searchQuery):
for key, value in Nodes.iteritems():
if isinstance(value, list):
for item in value:
matchValue = match_items(searchQuery, item['properties'])
if matchValue:
matched_items.append(item)
resursive_fun(item, searchQuery)
return matched_items
searchDict = {"id": 1, "process": 123}
resursive_fun(myinput, searchDict)
Das funktioniert gut. Aber wenn meine Suchanfrage mit mehr als einem Element in der Eingabe übereinstimmt, gibt dieser Algorithmus nicht alle Trefferergebnisse zurück. Beispiel: Wenn das Suchdikt 'searchDict = {" process ": 123}' ist, haben zwei meiner Objekte denselben Wert. In diesem Fall sollte es mir zwei Wörterbücher mit seiner Hierarchie zurückgeben. – vr22
Sie können die Logik ein wenig ändern, um nicht kurzzuschließen, wenn Sie mehrere Übereinstimmungen behandeln müssen. Die einzige schwierige Sache in dieser Situation ist die Entscheidung, wie mit den Unterelementen eines übereinstimmenden Elements verfahren wird. Sollten sie immer dabei sein oder nicht? – Blckknght
Unterartikel nicht unbedingt alle Male enthalten. Kannst du etwas mehr darüber erklären, wie man das Szenario mit mehreren Übereinstimmungen nicht kurzschließt? wäre sehr hilfreich für mich. Danke im Voraus. – vr22