合并2个字典并保存翻译字典以覆盖值

时间:2018-08-20 07:13:47

标签: python python-3.x dictionary merge

我合并2个字典,例如:d1d2

d1.update(d2)

即我有

d1 = {1:'a', 2:'b', 3:'c'}
d2 = {1:'a', 2:'g', 4:'x'}

然后在d1.update(d2)之后,我有

{1: 'a', 2: 'g', 3: 'c', 4: 'x'}

原来的2:'b'消失了,所以我想以某种方式使用翻译'b':'g',这意味着输出将是以下字典:

{'b':'g'}

有没有简单的代码来保留覆盖的值?

2 个答案:

答案 0 :(得分:4)

如果{"b":"g}是您真正想要的,则可以首先在update之前使用dict理解来创建它:

d1 = {1:'a', 2:'b', 3:'c'}
d2 = {1:'a', 2:'g', 4:'x'}

ot = {v : d2[k] for k,v in d1.items() if k in d2 and v != d2[k]}
print (ot)

d1.update(d2)
print (d1)

结果:

{'b': 'g'}
{1: 'a', 2: 'g', 3: 'c', 4: 'x'}

答案 1 :(得分:0)

  1. 找到两个字典中都存在的键
  2. 创建一个新的字典,将d1的值映射到d2的值
  3. 删除键和值相同的那些key:value对
d1 = {1:'a', 2:'b', 3:'c'}
d2 = {1:'a', 2:'g', 4:'x'}

shared_keys = d1.keys() & d2
mapping = {d1[key]: d2[key] for key in shared_keys}
mapping = {k: v for k, v in mapping.items() if k != v}

print(mapping)  # output: {'b': 'g'}