Python中如何用另一字典的值替换字典列表的键及嵌套字典场景的处理方法
解决嵌套字典列表的键映射替换问题
嗨,很高兴你已经搞定了基础场景的键替换!针对你现在遇到的嵌套结构字典列表的需求,我们可以通过两层遍历+字典推导式来轻松实现,下面是适配Python 3.9.7的具体方案:
先明确输入数据(修正了你示例里的语法小问题)
list_of_dicts = [ {'0123uvw': {'AssetId':'1234', 'CreatedById':'02i3s', 'Billable__c': True}}, {'456xyz': {'AssetId':'4567', 'CreatedById':'03j8t', 'Billable__c':True}} ] dict1 = { 'AssetKey':'AssetId', 'SourceRowCreatedBy':'CreatedById', 'FlagBillable':'Billable__c' }
实现代码
new_list_of_dicts = [] for outer_dict in list_of_dicts: # 遍历外层字典的每个键值对(你的示例里每个外层字典只有一组键值对) for outer_key, inner_dict in outer_dict.items(): # 用字典推导式完成内层字典的键替换 new_inner_dict = {new_key: inner_dict[old_key] for new_key, old_key in dict1.items()} # 将原外层键和新内层字典组合后加入结果列表 new_list_of_dicts.append({outer_key: new_inner_dict})
代码说明
- 第一层遍历:逐个处理列表中的每个外层字典;
- 第二层遍历:取出外层字典的唯一键(比如
'0123uvw')和对应的内层数据字典; - 字典推导式:根据
dict1的映射关系,直接生成替换好键的新内层字典; - 最后将原外层键与新内层字典重新组合,添加到结果列表中。
运行结果
执行代码后,new_list_of_dicts会得到你期望的结构:
[ {'0123uvw': {'AssetKey': '1234', 'SourceRowCreatedBy': '02i3s', 'FlagBillable': True}}, {'456xyz': {'AssetKey': '4567', 'SourceRowCreatedBy': '03j8t', 'FlagBillable': True}} ]
如果后续外层字典可能出现多个键的情况,这段代码也能自动适配,会把每个外层键对应的内层字典都完成键替换哦~
内容的提问来源于stack exchange,提问作者Jjman88
相关产品推荐
相关产品推荐

