辞書を含む辞書があります。辞書には無限の辞書も含まれています。入れ子になっている辞書にマップされているキーを除いて、すべての辞書のすべてのキーを変更したいと思います。私はこのような何かをしたいのか、キーは不変であることを理解:任意の深さの辞書のPython辞書のキーの名前を変更する方法
layer[item + '_addition'] = layer.pop(item)
私が今持っていることは次のとおりです。
def alterKeys(item, layer=topLevelDict):
if isinstance(item, dict):
for i in item:
alterKeys(item[i], item)
else:
layer[item + '_addition'] = layer.pop(item)
これは動作しません、それは継続的に再帰的に移動するよう最後の行がキーの代わりにdictから値をポップしようとするまでツリーを下ろして、KeyErrorを発生させます。 私は解決策に近いと知っていますが、私はこれについて数分間考えていましたが、私はそれを理解できないようです。