Merge nested dictionaries, by nested keys?

后端 未结 2 1670
终归单人心
终归单人心 2021-02-09 16:38

I have several dictionaries with different and common keys, plus different and common keys in the nested dictionary. Below is a simplified example, the actual dictionaries have

相关标签:
2条回答
  • 2021-02-09 17:13
    from collections import defaultdict
    
    mydicts = [
       {1:{"Title":"Chrome","Author":"Google","URL":"http://"}},
       {1:{"Title":"Chrome","Author":"Google","Version":"7.0.577.0"}},
       {2:{"Title":"Python","Version":"2.5"}},
    ]
    
    result = defaultdict(dict)
    
    for d in mydicts:
        for k, v in d.iteritems():
            result[k].update(v)
    
    print result
    

    defaultdict(<type 'dict'>, 
        {1: {'Version': '7.0.577.0', 'Title': 'Chrome', 
             'URL': 'http://', 'Author': 'Google'}, 
         2: {'Version': '2.5', 'Title': 'Python'}})
    
    0 讨论(0)
  • 2021-02-09 17:30

    From your example, looks like you can do something like:

    from collections import defaultdict
    mydict = defaultdict(dict)
    for indict in listofdicts:
        k, v = indict.popitem()
        mydict[k].update(v)
    
    0 讨论(0)
提交回复
热议问题