search

Home  >  Q&A  >  body text

python - 如何合并列表中key相同的字典?

现有list:

list1 = [{a: 123}, {a: 456},{b: 789}]

合并成:

list2 = [{a: [123,456]},{b: [789]}]

如何实现,望大神指点,不胜感激!!

大家讲道理大家讲道理2892 days ago584

reply all(3)I'll reply

  • 天蓬老师

    天蓬老师2017-04-18 09:33:59

    from collections import defaultdict
    lst = [{'a': 123}, {'a': 456},{'b': 789}]
    
    dic = {}
    for _ in lst:
        for k, v in _.items():
            dic.setdefault(k, []).append(v)
    
    print [{k:v} for k, v in dic.items()]

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:33:59

    Use a map. If the key exists, append it. If it does not exist, assign it. Finally, convert it to a list...

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:59

    In [1]: from collections import defaultdict
    
    In [2]: list1 = [{'a': 123}, {'a': 456}, {'b': 789}]
    
    In [3]: list2 = defaultdict(list)
    
    In [4]: [list2[k].append(v) for i in list1 for k, v in i.items()]
    Out[4]: [None, None, None]
    
    In [5]: list2.items()
    Out[5]: dict_items([('b', [789]), ('a', [123, 456])])
    
    In [6]: dict(list2)
    Out[6]: {'a': [123, 456], 'b': [789]}
    
    In [7]:

    reply
    0
  • Cancelreply