我可以帮您翻译成中文。以下是需要翻译的内容:
你知道如何做吗?感谢。
我想通过传递一个映射字典的函数来替换字典的键名,该函数还要替换嵌套键。问题在于,我有多个嵌套字典中命名为“id”的键,并且我想将这些“id”重命名为特定名称。
初始字典:
initial_dict = {'id': 1, 'netAmount': 10.2, 'modifiedOn': '2017-01-01',
'statusId': 3, 'approvalStateId': 3, 'approvalState': {'id': 3,'name':'Approved'}}
映射字典:
mapping_dict = {'id': 'pr_id', 'netAmount': 'net_amount', 'modifiedOn': 'modified_date',
'statusId': 'status_id', 'approvalStateId': 'approval_id','approvalState':{'id':'approv_id'}}
字典的期望输出结果:
output_dict = {'pr_id': 1, 'net_amount': 10.2, 'modified_date': '2017-01-01',
'status_id': 3, 'approval_id': 3, 'approvalState': {'approv_id': 3, 'name': 'Approved'}}
我所做的是这样的,但它只替换字典第一层级的键,如果我尝试在映射字典中设置嵌套键,则会出现错误。
def map_fields(obj):
new_obj = {}
mapping_dict = {'id': 'pr_id', 'netAmount': 'net_amount', 'modifiedOn': 'modified_date',
'statusId': 'status_id', 'approvalStateId': 'approval_id','approvalState':{'id':'approv_id'}}
for key in obj.keys():
if key in mapping_dict:
new_key = mapping_dict[key]
else:
new_key = key
new_obj[new_key] = obj[key]
return new_obj
你知道如何做吗?感谢。