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}}}
你有现有的代码吗?