我有一个嵌套字典{1: {2: {3: None}}}
和一个字典,它将嵌套字典的键映射到一组值,例如{1: x, 2: y, 3: z}
。我想将嵌套字典转换为此格式{x: {y: {z: None}}}
。我尝试过几个递归函数但是我一直在圈子里迷惑自己。实现这一目标的最佳方法是什么?
编辑:我忘了提到嵌套的级别是任意的。以上是一个简单的例子。
答案 0 :(得分:1)
您需要在使用新密钥构建新字典时递归字典。请注意,如果某个地方有一个列表或元组,其中包含其他字典,则无法处理它们 - 您必须添加一些代码才能执行此操作。你实际上可以在不构建新词典的情况下这样做,但我认为这种方式更简单。
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}}}