python - 如何合并具有相同键的字典

标签 python list dictionary

我有一个这样的数据结构:

    [ {'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 中创建一个 dict。

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 - 如何合并具有相同键的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67328076/

相关文章:

python - NestedSimpleRouter 无需在路由器中使用查找

python - 不能在 PIL 库中的 png 文件上使用 Image.putalpha()。操作系统错误 : cannot write mode PA as PNG

jquery - 删除列表中的最后一个子项

python - 将带有通配符的参数传递给 Python 脚本

python - 在python中创建数组内的数组

python通过给定开始和结束位置的两个列表连接子字符串

python - 从字典列表中删除重复项

python - psycopg2 将 python 字典插入为 json

python - 向后遍历,如果在内部字典中找到搜索值匹配,则返回外部字典值

python - 在 CPython 3.6 中获取字典中的第一个和第二个值