如何比较这两个词典(其中一个是嵌套的)?[Python]

2024-09-28 22:02:31 发布

您现在位置: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具有所有相同的值?谢谢你


Tags: 字典bobalicecharliedict1dict2agatcaatg
2条回答

您可以使用all(检查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

问题还不够清楚,试着澄清错误是什么,或者你到底期望什么

如果您的意思是要检查字典“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)

没有输出:

>>>

相关问题 更多 >