Hier ist die Funktion, die ich schrieb:Ich versuche eine Funktion zu schreiben, die eine Zeichenfolge aus einem multidimensionalen Wörterbuch ausgibt.
def print_dict(d, indent, CMD_str, index = 0):
if isinstance(d,dict):
for key, value in d.items():
CMD_str += ('\t' * indent + str(key) + '\n')
# print('\t' * indent + str(key) + '\n')
if isinstance(value, dict):
CMD_str += print_dict(value, indent+1, CMD_str, index = index+1)
elif isinstance(value,list):
for i in value:
if isinstance(i,list):
CMD_str += print_dict(i,indent+1, CMD_str = CMD_str, index = index+1)
else:
CMD_str += ('\t'*(indent+1) + i + '\n')
else:
CMD_str += ('\t' * (indent+1) + str(value) + '\n')
elif isinstance(d,list):
for i in d:
print(index)
if isinstance(i,list):
CMD_str += print_dict(i,indent+1, CMD_str, index = index+1)
else:
CMD_str += ('\t'*(indent) + i)
return CMD_str
Diese Funktion ursprünglich das Wörterbuch gedruckt und funktionierte perfekt. Allerdings muss ich jetzt eine Zeichenkette ausgeben, anstatt zu drucken, also habe ich das Eingabeargument CMD_str hinzugefügt, damit ich die Zeichenkette solange in der Funktion belassen kann, bis ich mich durch das Wörterbuch durchgearbeitet habe. Allerdings bleibt es irgendwo hängen und ich kann nicht verstehen warum. Durch das Drucken von Einrückwerten kann ich sagen, dass es ungefähr 10 Mal durchlaufen wird, bevor es stecken bleibt. Jede Hilfe würde sehr geschätzt werden.
Vielen Dank! Ich habe meine Funktion durch deine ersetzt und es funktioniert. Ich bin nicht sicher, warum meine nicht funktionierte, aber ich sehe, wo Code dupliziert wurde. Ich glaube nicht, dass der one_line_printable (Element) Teil notwendig ist, weil ich ausschließlich mit Strings arbeite, aber ich werde es der Vollständigkeit halber hier behalten. Danke noch einmal! –