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

标签 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/... 中”应该作为值放在相应的位置。我能够合并字典,但无法将丢失的关键信息保存为最终字典中的值

最佳答案

一种方法是计算字典键的并集。然后在字典理解中利用 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/

相关文章:

python - 在 groupby 之后获得最低值 - Pandas

python - 将 fsolve 与 scipy 函数一起使用

python - 如何使用 A 列和 B 列使用 DF2 中的值在 DF1 上创建 C 列

python - 如何在字典中查找共享相同键的值?

java - 为 Lucene (PyLucene) 中的每个文档获取 TFIDF 得分最高的 N 个术语

python - 我的代码正在处理字典列表,就像字符串一样,类型错误: TypeError: string indices must be integers

python - 更新字典中的嵌套计数器

android - 如何更改 .map 文件中的 mapsforge 街道名称

python - 如何在字典中的列表列表上迭代一个键?

python - 来自多个列表的父子结构