首页 > 解决方案 > 我如何比较这两个字典(其中一个是嵌套的)?[Python]

问题描述

我这里有两本字典,我想比较一下

dict1 = {
    'Alice': {'AGATC': '2', 'AATG': '8', 'TATC': '3'},
    'Bob': {'AGATC': '4', 'AATG': '1', 'TATC': '5'},
    'Charlie': {'AGATC': '3', 'AATG': '2', 'TATC': '5'},
}

dict2 = {'AGATC': '4', 'AATG': '1', 'GATA': '2', 'TATC': '5', 'GAAA': '3'}

我如何比较这两者以查看存在的值清楚地表明 Bob 具有所有相同的值?感谢你

标签: pythondictionary

解决方案


问题不够清楚,请尝试澄清错误或您的预期。

如果您的意思是要检查字典 'dict1' 的项是否存在于字典 'dict2' 的项中,但值不完全相同,您可以试试这个:

dict1 = {
    'Alice': {'AGATC': '2', 'AATG': '8', 'TATC': '3'},
    'Bob': {'AGATC': '4', 'AATG': '1', 'TATC': '5','jjj':'5'},
    'Charlie': {'AGATC': '3', 'AATG': '2', 'TATC': '5'},
}

dict2 = {'Bob': {'AGATC': '4', 'AATG': '1', 'TATC': '5'}}
for i in dict1:
    for j in dict2:
        if set(dict2[j].items()).issubset(set(dict1[i].items())):
                print(i)

输出:

>>> Bob

但是,如果你想检查它是否存在完全相同的值,你只需添加 if 语句:

dict1 = {
    'Alice': {'AGATC': '2', 'AATG': '8', 'TATC': '3'},
    'Bob': {'AGATC': '4', 'AATG': '1', 'TATC': '5','jjj':'5'},
    'Charlie': {'AGATC': '3', 'AATG': '2', 'TATC': '5'},
}

dict2 = {'Bob': {'AGATC': '4', 'AATG': '1', 'TATC': '5'}}
for i in dict1:
    for j in dict2:
        if set(dict2[j].items()).issubset(set(dict1[i].items())) and dict2[j] == dict1[i]:
                print(i)

没有输出:

>>>

推荐阅读