比较字典中的键和值,并将不匹配的值输出到lis

2024-05-12 22:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要比较两本字典,如下所示:

dic1 = {
    'a': ['a1', 'a2'],
    'b': ['b1', 'b2'],
    'c': ['c1', 'c2']
}
dic2 = {
    'a': ['a1', 'a3'],
    'b': ['b1', 'b2', 'b3', 'b4']
}

输出应仅显示dic2中的项目,而不是dic1中的项目,如下所示:

^{pr2}$

我是Python的新手,所以我一直在努力让它工作。在

key_d1 = dic1.keys()
key_d2 = dic2.keys()
value_d1 = dic1.values()
value_d2 = dic2.values()

output = {}
nomatch = {}

for i, j in zip(key_d1, value_d1):
    if i in key_d2:
        if j not in value_d2:
            output = ??
    else:
        nomatch[i] = j

Tags: 项目keyinoutputvaluea1keysb2
1条回答
网友
1楼 · 发布于 2024-05-12 22:18:22

你只需读懂字典就可以做到这一点。在

dict1 = {
    'a': ['a1', 'a2'],
    'b': ['b1', 'b2'],
    'c': ['c1', 'c2']
}
dict2 = {
    'a': ['a1', 'a3'],
    'b': ['b1', 'b2', 'b3', 'b4'],
    'd': ['d1', 'd2']
}

d = { key : [element for element in elements if element not in dict1.get(key, [])] 
    for key, elements in dict2.items()
}
print(d)

不过,我怀疑你在问题上弄错了。在

show only items that in dict2 but not in dict1

应该是这样的:

^{pr2}$

这不是您提供的示例输出。在

相关问题 更多 >