我有两个命令:
a = {'a': 1, 'b': 2, 'c': 3}
b = {'a': 2, 'd': 4, 'c': 5}
我想得到:
{'a': 2, 'b': 2, 'c': 5}
我使用了 {**a, **b} 但它返回:
{'a': 2, 'b': 2, 'c': 5, 'd': 4}
请帮我以最简单、最快的方式排除 b 中不在 a 中的键。
我有Python 3.7
您必须先过滤第二个
dict
的元素,以免添加任何新元素。我有两种可能的解决方案:
a = {'a': 1, 'b': 2, 'c': 3}
b = {'a': 2, 'd': 4, 'c': 5}
for k,v in b.items():
if (k in a.keys()):
a[k] = v
print(a)
a = {'a': 1, 'b': 2, 'c': 3}
b = {'a': 2, 'd': 4, 'c': 5}
a.update([(k,v) for k, v in b.items() if k in a.keys()])
print(a)
两者的输出:
{'a': 2, 'b': 2, 'c': 5}
我认为理解很容易:
{ i : (b[i] if i in b else a[i]) for i in a }
试试这个:
a = {'a': 1, 'b': 2, 'c': 3}
b = {'a': 2, 'd': 4, 'c': 5}
result = {}
# Iterate over keys in dictionary a
for key, value in a.items():
# If key exists in dictionary b, choose the maximum value
if key in b:
result[key] = max(value, b[key])
else:
result[key] = value
print(result)
这也应该有效:
result = {key: max(a.get(key, 0), b.get(key, 0)) for key in a}
print(result)