如果键在第二个字典中,则匹配两个字典并在第一处更改键

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

我有两个dict

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

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

预期结果:

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

我该怎么做?

python dictionary
3个回答
2
投票
{a[k] if k in a else k: v for k, v in b.items()}

1
投票

这是完成的方式:

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]})

1
投票

到目前为止,其他答案都忽略了希望代码执行以下操作的问题:

更改字典中的字典中的键以获取字典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)
© www.soinside.com 2019 - 2024. All rights reserved.