如何用Python合并两个字典并对不存在的键补0
解法1:直接遍历所有键的并集(最易理解,适合新手)
核心用到字典的get方法,不存在的键直接返回默认值0,代码如下:
d1 = {'a':2, 'b':4} d2 = {'a':13, 'b':3, 'c':5} # 取两个字典的所有不重复键 all_keys = d1.keys() | d2.keys() # 每个键分别从两个字典取值,不存在补0 result = {key: [d1.get(key, 0), d2.get(key, 0)] for key in all_keys} print(result)
运行输出即为你要的结果:{'a': [2, 13], 'b': [4, 3], 'c': [0, 5]}
解法2:支持多字典扩展的defaultdict写法
如果你后续可能需要合并更多字典,推荐这个扩展性更强的写法,对原有的defaultdict逻辑调整如下:
from collections import defaultdict d1 = {'a':2, 'b':4} d2 = {'a':13, 'b':3, 'c':5} # 要合并的字典都放这个列表里,后续加字典直接往列表塞就行 dict_list = [d1, d2] dict_count = len(dict_list) # 初始化每个键的默认值为长度等于字典数量的全0列表 dd = defaultdict(lambda: [0]*dict_count) for idx, d in enumerate(dict_list): for key, val in d.items(): # 对应位置替换成实际值,没出现的位置保留0 dd[key][idx] = val result = dict(dd) print(result)
内容的提问来源于stack exchange,提问作者Tony Stark
相关产品推荐
相关产品推荐

