如上 想用d1,d2合成为d3格式. 首先想到的是利用dict的update函数,但发现存在如下问题:
d1 = {'a':1,'b':2,'c':3} d2 = {'a':4,'b':5,'c':6} d3 ={} d3.update(d1) d3.update(d2) print(d3) {'a': 4, 'b': 5, 'c': 6}并不会将相同的key的value合并在一起,只取大值
后又采用另外的方法发现结果一样
d1 = {"a": 1, "b": 2, "c": 3} d2 = {"a": 4, "b": 5, "c": 6} d3 = {**d1, **d2} d4 = {**d2, **d1} d3 Out[11]: {'a': 4, 'b': 5, 'c': 6} d4 Out[12]: {'a': 1, 'b': 2, 'c': 3}没办法只能转到for 循环了,发现了一个还不错的方法 setdefult() 这个方法对于字典中已经有的key , 直接 return 这个 key 对对应的值,
如果没有 key ,会加入这个key ,setdefault(key[, default]) 并且可以指定 一个默认值, 如果没有指定, 则认为是None 返回, 如果 指定了default 则直接返回 default值 如果有这个key ,直接返回字典中对应的key 的值 ,即使设置了default ,也不会返回default, 而是返回 key 对应的value 值
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) dic Out[17]: {'a': [123, 456], 'b': [789]}