Python:替换嵌套字典中的键

Python:替换嵌套字典中的键,python,dictionary,recursion,nested,Python,Dictionary,Recursion,Nested,我有一个嵌套字典{1:{2:{3:None}}}和一个字典,它将嵌套字典的键映射到一组值,例如{1:x,2:y,3:z}。我想将嵌套字典转换为这种形式{x:{y:{z:None}}。我尝试了几个递归函数,但我一直在兜圈子,弄糊涂了自己。实现这一目标的最佳方式是什么 编辑:我忘了提到嵌套的级别是任意的。上面是一个简单的例子。在使用新键构建新字典时,需要递归字典。请注意,如果您在其中的某个地方有一个列表或元组,其中包含其他字典,则不会对它们进行处理—您必须添加一些代码来完成此操作。实际上,你可以不用

我有一个嵌套字典
{1:{2:{3:None}}}
和一个字典,它将嵌套字典的键映射到一组值,例如
{1:x,2:y,3:z}
。我想将嵌套字典转换为这种形式
{x:{y:{z:None}}
。我尝试了几个递归函数,但我一直在兜圈子,弄糊涂了自己。实现这一目标的最佳方式是什么


编辑:我忘了提到嵌套的级别是任意的。上面是一个简单的例子。

在使用新键构建新字典时,需要递归字典。请注意,如果您在其中的某个地方有一个列表或元组,其中包含其他字典,则不会对它们进行处理—您必须添加一些代码来完成此操作。实际上,你可以不用建立一本新词典就可以做到这一点,但我认为这种方法更简单

od = { 1: { 2: { 3: None }}}
kd = { 1: 'x', 2: 'y', 3: 'z' }

def replace_keys(old_dict, key_dict):
    new_dict = { }
    for key in old_dict.keys():
        new_key = key_dict.get(key, key)
        if isinstance(old_dict[key], dict):
            new_dict[new_key] = replace_keys(old_dict[key], key_dict)
        else:
            new_dict[new_key] = old_dict[key]
    return new_dict

nd = replace_keys(od, kd)
print nd
产出:

{'x': {'y': {'z': None}}}

你有现有的代码吗?