小编Kum*_*mzy的帖子

使用映射字典更改字典的键

我想通过传递映射字典和替换嵌套键的函数来替换字典的键名称。问题是我在嵌套字典中有多个名为“id”的键,我想用特定名称重命名这些“id”。

初始词典:

initial_dict = {'id': 1, 'netAmount': 10.2, 'modifiedOn': '2017-01-01',
                    'statusId': 3, 'approvalStateId': 3, 'approvalState': {'id': 3,'name':'Approved'}}
Run Code Online (Sandbox Code Playgroud)

映射字典:

 mapping_dict = {'id': 'pr_id', 'netAmount': 'net_amount', 'modifiedOn': 'modified_date',
                'statusId': 'status_id', 'approvalStateId': 'approval_id','approvalState':{'id':'approv_id'}}
Run Code Online (Sandbox Code Playgroud)

字典所需的输出:

    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'}}
Run Code Online (Sandbox Code Playgroud)

我所做的是这个,但它只替换字典第一级的键,如果我尝试在映射字典中设置嵌套键,则会收到错误。

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 = …
Run Code Online (Sandbox Code Playgroud)

python mapping dictionary nested

5
推荐指数
1
解决办法
4329
查看次数

标签 统计

dictionary ×1

mapping ×1

nested ×1

python ×1