如果输入字典中没有嵌套字典对象,上述解决方案效果很好。
下面是更通用的实用函数,它以递归方式用新的密钥集替换现有密钥。
def update_dict_keys(obj, mapping_dict):
if isinstance(obj, dict):
return {mapping_dict[k]: update_dict_keys(v, mapping_dict) for k, v in obj.iteritems()}
else:
return obj
测试:
dic = {'voornaam': 'John', 'Achternaam': 'Davis',
'telephone':'123456', 'Mobielnummer': '234567',
"a": {'Achternaam':'Davis'}}
tr = {'voornaam': 'first_name', 'Achternaam': 'last_name',
'telephone':'phone', 'Mobielnummer': 'mobile', "a": "test"}
输出:
{
'test': {
'last_name': 'Davis'
},
'mobile': '234567',
'first_name': 'John',
'last_name': 'Davis',
'phone': '123456'
}