我有两个词典,A和B,我想要获取那些键:B中存在但不存在A的值对,并将它们添加到A.我不希望B的值与匹配的键是在A中添加或覆盖。
A = {'one':1, 'two':2}
B = {'one':1, 'two':999, 'three':3}
我希望结果字典看起来像:
A = {'one':1, 'two':2, 'three':3}
我认为答案是这样的,但我无法使价值部分正确。
A.update(dict.fromkeys(set(B).difference(A), B.values()))
答案 0 :(得分:3)
您可以使用dict.setdefault()
:
A = {'one':1, 'two':2}
B = {'one':1, 'two':999, 'three':3}
for k,v in B.items():
A.setdefault(k, v)
print(A)
{'two': 2, 'one': 1, 'three': 3}
答案 1 :(得分:2)
可以这样做:
for key in B:
if key not in A:
A[key] = B[key]
在你说它不在同一行之前,我会说它很可读并且做你想要的。
答案 2 :(得分:2)
也许是工会?
>>> A = {'one':1, 'two':2}
>>> B = {'one':1, 'two':999, 'three':3}
>>> dict(B.items() + A.items())
{'one': 1, 'three': 3, 'two': 2}
答案 3 :(得分:1)
你走在正确的轨道上。
使用{} .update()和一组键。凭着词典理解:
>>> A = {'one':1, 'two':2}
>>> B = {'one':1, 'two':999, 'three':3}
>>> A.update({key:B[key] for key in set(B)-set(A)})
>>> A
{'three': 3, 'two': 2, 'one': 1}
或dict
和生成器表达式:
>>> A.update(dict((key,B[key]) for key in set(B)-set(A)))