输入是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/... 中”应该作为值放在相应的位置。我能够合并字典,但无法将丢失的关键信息保存为最终字典中的值
最佳答案
一种方法是计算字典键的并集。然后在字典理解中利用 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']}
关于python - 合并缺少键的字典以创建组合字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50784279/