如何比较这两个字典(其中一个嵌套)? [蟒蛇]

时间:2020-05-28 09:07:46

标签: python dictionary

在这里我想比较两个字典

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具有所有相同的值?谢谢你

2 个答案:

答案 0 :(得分:0)

您可以利用所有功能(检查dict2中所有Bob的键和值是否相等)

for user, items in dict1.items():
    result = all(dict2.get(k) == v for (k, v) in items.items())
    print("%s: %s" % (user, result))

输出:

Charlie: False
Bob: True
Alice: False

答案 1 :(得分:0)

这个问题还不够清楚,请尝试弄清楚错误是什么或您确切期望的是什么。

如果您要检查字典“ dict2”的项中是否存在字典“ dict1”的项,但值不完全相同,则可以尝试以下操作:

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)

没有输出:

>>>