如何合并具有相同键的字典 [英] How to merge dictionary having same keys

查看:72
本文介绍了如何合并具有相同键的字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a data structure like this:

    [ {'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.

Using https://docs.python.org/3/library/collections.html#collections.defaultdict which creates a dict within the defaultdict anytime a new key is encountered.

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'}})

这篇关于如何合并具有相同键的字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆