python - 如何组合多个条目的两个字典列表
问题描述
我有两个字典列表,我想合并或合并它们。这里的障碍是我想根据键值组合它们,而这个键值在每次迭代中都是不同的,它们不是固定的,我该如何实现呢?以下是我需要合并的两个字典列表。
l1 = [
{'Fvcm':{
'name' :'FVCM',
'size' : 8,
'Type' : 'Z'
}
},
{'RPZM':{
'name' :'RPZM',
'size' : 8,
'Type' : 'R'
},
},
{'ZAN':{
'name' :'ZAN',
'size' : 8,
'Type' : 'P'
}
}
]
l2 = [
{'Fvcm':{
'name' :'FVCM',
'map' : 'Prim1'
}
},
{'RPZM':{
'name' :'RPZM',
'map' : 'Prim2'
},
},
{'ZAN':{
'name' :'ZAN',
'map' : 'Prim3'
}
}
]
我希望最终结果看起来像:
l3 = [
{'Fvcm':{
'name' :'FVCM',
'map' : 'Prim1',
'size' : 8,
'Type' : 'Z'
}
},
{'RPZM':{
'name' :'RPZM',
'map' : 'Prim2',
'size' : 8,
'Type' : 'R'
},
},
{'ZAN':{
'name' :'ZAN',
'map' : 'Prim3',
'size' : 8,
'Type' : 'P'
}
}
]
提前致谢!
解决方案
您可以使用update将 2 个字典合并在一起。这需要将嵌套的字典列表结构修改为非嵌套字典:
d1 = {k: v for item in l1 for k, v in item.items()} # regular k,v dict
d2 = {k: v for item in l2 for k, v in item.items()} # same
_ = [d1[k].update(v) for (k, v) in d2.items()] # update each key in d1 with its corresponding value from d2
print(d1)
出去:
{'Fvcm': {'name': 'FVCM', 'size': 8, 'Type': 'Z', 'map': 'Prim1'}, 'RPZM': {'name': 'RPZM', 'size': 8, 'Type': 'R', 'map': 'Prim2'}, 'ZAN': {'name': 'ZAN', 'size': 8, 'Type': 'P', 'map': 'Prim3'}}
推荐阅读
- web-applications - 将 JHipster 添加到已经制作的应用程序中?
- java - 底部工作表对话框片段不会显示
- javascript - 功能只工作一次
- javascript - Javascript:通过图像路径(字符串)传递时检查文件系统中是否存在图像
- mysql - MySQL 5.7 - 错误 sql_mode=only_full_group_by
- python - 如何使用 python 脚本获取 MacOS 笔记本电脑的电池百分比?
- python - python logging 模块默认在哪里写日志?
- php - Laravel Valet 安装后无法解析站点
- visual-studio - 用于颠覆和/或 BitBucket 的 VS2017 SSIS 版本控制
- sql - 基于两个不同的连接从表中返回两条数据