我想创建一个“translator”类型的dict,它将把不同dict中的键(嵌套)赋值给我创建的dict中的键。我遇到的问题是,如果不将值转换为字符串或其他数据类型,就无法创建表示嵌套dict键的值,当我尝试将字符串用作嵌套dict的索引时,会出现索引错误。理想情况下,我的口述应该是这样的:

new_dict{
    "new_key_1" : ['subdict1']['subdict2']['old_key_1'],
    "new_key_2" : ['subdict1']['subdict2']['old_key_2'],
    "new_key_3" : ['subdict1']['subdict3']['old_key_3']
    }

然后,对于每个嵌套的dict,我可以用一个简单的for循环生成一个新的dict对象:
for key, value in new_dict.items() :
    user_dict_1[key] = OldDict[value]

嵌套的dict非常大,我只需要每个dict中的几个字段,否则我只能使用.copy()函数处理旧的dict。
附言-任何有助于重写这个问题,以使更可读也表示感谢。

最佳答案

这次你需要reduce()

attrmap = {
  "new_key_1": ('subdict1', 'subdict2', 'old_key_1'),
   ...
}

print reduce(lambda x, y: x[y], attrmap[somekey], old_object)

09-04 17:46