Ich habe das folgende Wörterbuch:
%Vor%Und das folgende Jinja2 Template:
%Vor%Aber Jinja2 gibt immer aus:
%Vor% Ich verstehe, dass rekursiv, würde es mir auch das "c" -Element zeigen, aber es funktioniert nur für eine Tiefe von 2. Warum wird dictionary
nicht zu dictionary[key]
bei jeder Schleife Iteration? Der dictionary
ist immer der ursprüngliche dictionary
.
Sie haben Recht, dictionary
wird in den Rekursionsaufrufen nicht aktualisiert, und die Schleife kann nicht fortgesetzt werden, weil die Schlüssel nicht gefunden werden.
Um dieses Problem zu umgehen, verwenden Sie nur die Variablen, die in der for-Schleife zugewiesen sind. Im Wörterbuchbeispiel bedeutet dies, dass die Elemente des Wörterbuchs anstatt nur der Schlüssel durchlaufen werden:
%Vor%Die Ausgabe dieses Skripts lautet:
%Vor% Hier können Sie sehen, dass die Rekursion für den b
-Schlüssel funktioniert, weil sowohl key
als auch value
bei jeder Iteration der Schleife aktualisiert werden (Ich habe die "Recursive key, value" -Nachricht zur Vorlage hinzugefügt es klar).
versuche so etwas:
%Vor% Ich denke, Sie müssen ein iterables in das loop()
Konstrukt übergeben.