python - 如何合并具有相同键的字典
问题描述
我有一个这样的数据结构:
[ {'SNAPSHOT': {'SnapshotVersion': '304'}},
{'SNAPSHOT': {'SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807'}},
{'CafeData': {'IsSoftwareOnly': '1'}},
{'CafeData'{'IsPassportTCPIP': '1'}}
]
输出应该是这样的:
[ {'SNAPSHOT': {'SnapshotVersion': '304','SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807','IsSoftwareOnly': '1','IsPassportTCPIP': '1'}}
]
解决方案
使用https://docs.python.org/3/library/collections.html#collections.defaultdict在遇到新键时在 defaultdict 中创建一个字典。
import collections as co
dd = co.defaultdict(dict)
l = [ {'SNAPSHOT': {'SnapshotVersion': '304'}},
{'SNAPSHOT': {'SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807'}},
{'CafeData': {'IsSoftwareOnly': '1'}},
{'CafeData': {'IsPassportTCPIP': '1'}} ]
for i in l:
for k,v in i.items():
dd[k].update(v)
结果:
In [8]: dd
Out[8]:
defaultdict(dict,
{'SNAPSHOT': {'SnapshotVersion': '304',
'SnapshotCreationDate': '2015-06-21 17:33:41'},
'CafeData': {'CafeVersion': '2807',
'IsSoftwareOnly': '1',
'IsPassportTCPIP': '1'}})
推荐阅读
- python - 如何修复 concurrent.futures 线程中的“TypeError:'int' object is not iterable”错误?
- jquery - 在 Rails 中将数据从循环传递到部分点击
- reactjs - 如何更改剑道反应中详细信息行的详细信息展开/折叠列的标题?
- c - 宏扩展期间出现意外的语法错误
- reactjs - history.push 仅在 react 应用程序中使用 BrowserRouter 时更新 URL
- excel - 从excel vba中的宏正确调用单元格公式
- intel-pin - 查找检测系统调用的调用站点
- c# - 在嵌套类中,如何控制重复信息不记录在表中
- reactjs - 更改样式组件的脚本注入顺序
- python - 有没有办法在关闭或退出 Django 项目时删除目录内容?