在字典中找到匹配的键并用值替换键

时间:2019-03-19 21:46:30

标签: python dictionary

我有两个字典,我需要比较键,如果键匹配,则需要用第一个字典中的值替换第二个字典中的键。

d1 = {'22': 'Jane', '33': 'Tom', '44': 'John', '55': 'Laura'}    
d2 = {'22': {'Lilly', 'Jake'}, '33' : {'Janet'}, '44': {'Tim'}}

我开始了,但是已经有些问题了...

for k, v in d2.items():
    d2[k] = d1(k, v)
    print(d2)

它应该像这样:

{'Jane': {'Lilly', 'Jake'}, 'Tom': {'Janet'}, 'John': {'Tim'}}

2 个答案:

答案 0 :(得分:0)

您可以使用字典理解来迭代两个字典的键的交集并输出相应的值作为新字典的键和值:

{d1[k]: d2[k] for k in d1.keys() & d2.keys()}

这将返回:

{'Tom': {'Janet'}, 'Jane': {'Jake', 'Lilly'}, 'John': {'Tim'}}

但是,集合是无序的。如果您想保留d2的键顺序(因为自python 3.7起就对键进行了排序),则可以迭代d2的项:

{d1[k]: v for k, v in d2.items() if k in d1}

这将返回:

{'Jane': {'Lilly', 'Jake'}, 'Tom': {'Janet'}, 'John': {'Tim'}}

答案 1 :(得分:0)

您可以执行以下操作:
1)遍历第一个字典中的键值
2)如果键值作为第二个字典中的键存在,则为第一个字典键的值创建一个新条目,并删除旧键的条目。

这对我有用:

d1 = {'22': 'Jane', '33': 'Tom', '44': 'John', '55': 'Laura'}

d2 = {'22': {'Lilly', 'Jake'}, '33' : {'Janet'}, '44': {'Tim'}}

for key in d1:
    if key in d2:
        d2[d1[key]] = d2[key]
        del d2[key]