匹配两个dict,如果第二个dict中存在键,则更改第一个dict中的键

2024-09-29 05:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个{}:

a={'a':'A','b':'B'}
b={'a':123,'b':123}

我需要检查dictb中的键“a”和“b”(示例中的两个元素,在实际代码中,它将更多)是否存在于dicta中。如果是这样,我应该使用dicta中的值更改dictb中的键:

预期结果:

b={'A':123, 'B': 123}

我怎么能做到


Tags: 代码元素示例dictadictb
3条回答

到目前为止,其他答案忽略了希望代码:

change keys in dict in b for values from dict a

我推断b中的任何数据,如果在a中没有替换键,则应该单独保留。因此,按a键创建新词典c是行不通的。我们需要直接修改b。一个有趣的方法是通过pop()方法,我们通常将其与列表关联,但也适用于字典:

a = {'a': 'A', 'b': 'B'}
b = {'a': 123, 'b': 124, 'C': 125}

for key in list(b):  # need a *copy* of old keys in b
    if key in a:
        b[a[key]] = b.pop(key)  # copy data to new key, remove old key

print(b)

输出

> python3 test.py
{'C': 125, 'A': 123, 'B': 124}
>

这是如何做到的:

a={'a':'A','b':'B'}
b={'a':123,'b':123}
c = {}
for key in a.keys():
    if key in b.keys():
        c.update({a[key]:b[key]})
{a[k] if k in a else k: v for k, v in b.items()}

相关问题 更多 >