我合并2个字典,例如:d1
和d2
:
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'}
有没有简单的代码来保留覆盖的值?
答案 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)
d1
的值映射到d2
的值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'}