Python。如何合并两个具有相同键的字典?

问题描述 投票:0回答:3

我有两个命令:

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

python python-3.x dictionary
3个回答
2
投票

您必须先过滤第二个

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}

1
投票

我认为理解很容易:

{ i : (b[i] if i in b else a[i]) for i in a }

0
投票

试试这个:

    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)
© www.soinside.com 2019 - 2024. All rights reserved.