Ich habe ein Wörterbuch, das Wörterbücher enthält, die wiederum Wörterbücher ad infinitum enthalten können. Ich möchte jeden Schlüssel in allen Wörterbüchern ändern, mit Ausnahme der Schlüssel, die einem der verschachtelten Wörterbücher zugeordnet sind. Ich verstehe, dass die Schlüssel unveränderlich sind, was ich so etwas wie dies tun wollen:Wie Sie Schlüssel in einem Python-Wörterbuch von Wörterbüchern mit beliebiger Tiefe umbenennen
layer[item + '_addition'] = layer.pop(item)
Was ich habe, ist gerade jetzt:
def alterKeys(item, layer=topLevelDict):
if isinstance(item, dict):
for i in item:
alterKeys(item[i], item)
else:
layer[item + '_addition'] = layer.pop(item)
Das funktioniert nicht, da es immer wieder rekursiv reisen den Baum hinunter, bis die letzte Zeile versucht, einen Wert aus dem Dict zu holen, statt eines Schlüssels, der einen KeyError auslöst. Ich weiß, dass ich einer Lösung nahe bin, aber ich habe ein paar Minuten darüber nachgedacht und ich kann es nicht herausfinden.