合并缺少键的字典以创建组合字典

时间:2018-06-10 13:39:02

标签: python dictionary

输入为3字典d1 / d2 / d3

d1 = {aa:1, bb:2, cc:3}

d2 = {aa:9, cc:4, jj:8}

d3 = {aa:5, bb:0, kk:88}

必填最终

final = {aa: [1,9,5], bb: [2,'Not in d2',0], cc: [3,4,'Not in d3'], 
         jj: ['Not in d1',8,''Not in d3'], kk: ['Not in d1','Not in d2',88]}

必需的是具有键值的单字典,如下所示。值的位置应按字典顺序排列。

此外,如果键不在任何字典中,那么'不在d1 / d2 / d3 / ...中应该作为值进入相应的位置。我能够合并字典但不能将缺失的密钥信息保存为最终字典中的值

1 个答案:

答案 0 :(得分:4)

一种方法是计算字典键的并集。然后在字典理解中使用dict.get来创建将字符映射到列表的字典。

keys = set().union(d1, d2, d3)

final = {k: [d1.get(k, 'Not in d1'),
             d2.get(k, 'Not in d2'),
             d3.get(k, 'Not in d3')] for k in keys}

print(final)

{'bb': [2, 'Not in d2', 0],
 'aa': [1, 9, 5],
 'cc': [3, 4, 'Not in d3'],
 'kk': ['Not in d1', 'Not in d2', 88],
 'jj': ['Not in d1', 8, 'Not in d3']}