d1 = {'a':1,'b':2,'c':3}
d2 = {'a':4,'b':5,'c':6}
d3 = {'a':[1,4],'b':[2,5],'c':[3,6]}
如上 想用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]}