python - 如何合并列表中key相同的字典?
大家讲道理
大家讲道理 2017-04-18 09:31:59
[Python讨论组]

现有list:

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

合并成:

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
天蓬老师
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()]
大家讲道理

用个map 键存在就append 不存在就赋值 最后转成list...

伊谢尔伦
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]:
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号