Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
Listen fangen mit Index 0 an und laufen dann bis Länge - 1, Du gehst aber bis zur Länge, und wenn ich das richtig sehe, auch noch bis zur falschen Länge (die vom 0ten Element). Die eingebaute Funktion `len` überdeckst Du mit der Variable `len`. Das geht hier nur gut, weil Du nur einmal `len` benutzt, und alle Deine Variablen globale Variablen sind. Sollte man aber trotzdem nicht machen.
Statt einer while-Schleife würde man eine for-Schleife verwenden.
Code: Alles auswählen
length = len(resp["vorgangsbezug"])
top = ""
for i in range(length):
top = top + "-" + resp["vorgangsbezug"][i]["titel"] + " (" + resp["vorgangsbezug"][i]["vorgangstyp"] + ")\n"
Über einen Index iteriert man aber nicht, weil man über die Elemente der Liste direkt laufen kann:
Code: Alles auswählen
top = ""
for vorgangsbezug in resp["vorgangsbezug"]:
top = top + "-" + vorgangsbezug["titel"] + " (" + vorgangsbezug["vorgangstyp"] + ")\n"
Statt Strings mit + zusammenzustückeln benutzt man Formatstrings:
Code: Alles auswählen
top = ""
for vorgangsbezug in resp["vorgangsbezug"]:
top += f'-{vorgangsbezug["titel"]} ({vorgangsbezug["vorgangstyp"]}\n'
Und statt Strings immer wieder zu verlängern, benutzt man str.join:
Code: Alles auswählen
top_elemente = []
for vorgangsbezug in resp["vorgangsbezug"]:
top_elemente.append(f'-{vorgangsbezug["titel"]} ({vorgangsbezug["vorgangstyp"]}\n')
top = "".join(top_elemente)
Und jetzt könnte man noch einen Generatorausdruck verwenden:
Code: Alles auswählen
top = "".join(
f'-{vorgangsbezug["titel"]} ({vorgangsbezug["vorgangstyp"]}\n'
for vorgangsbezug in resp["vorgangsbezug"]
)