Ich benutze die Antwort von @wim oben, mit dict.pop(), um Schlüssel umzubenennen, aber ich fand einen Fallstrick. Wenn ich das Dictionary durchlaufe, um die Schlüssel zu ändern, ohne die Liste der alten Schlüssel vollständig vom Dictionary-Objekt zu trennen, führte dies dazu, dass neue, geänderte Schlüssel in die Schleife eingefügt wurden und einige vorhandene Schlüssel fehlten.
Zu Beginn habe ich es folgendermaßen gemacht:
für current_key in my_dict:
new_key = current_key.replace(':','_')
fixed_metadata[new_key] = fixed_metadata.pop(current_key)
Ich stellte fest, dass das Durchlaufen des Dictionary auf diese Weise dazu führte, dass das Dictionary auch Schlüssel fand, wenn es nicht sollte, d.h. die neuen Schlüssel, die ich geändert hatte! Ich musste die Instanzen vollständig voneinander trennen, um (a) zu verhindern, dass meine eigenen geänderten Schlüssel in der Schleife gefunden wurden, und (b) einige Schlüssel zu finden, die aus irgendeinem Grund innerhalb der Schleife nicht gefunden wurden.
Ich mache das jetzt so:
current_keys = list(my_dict.keys())
für current_key in current_keys:
und so weiter...
Es war notwendig, die my_dict.keys() in eine Liste umzuwandeln, um die Referenz auf das sich ändernde Dictionary loszuwerden. Wenn ich einfach nur my_dict.keys() benutzte, war ich an die ursprüngliche Instanz gebunden, mit den seltsamen Nebeneffekten.