我需要比较以下两个词典:
dic1 = {
'a': ['a1', 'a2'],
'b': ['b1', 'b2'],
'c': ['c1', 'c2']
}
dic2 = {
'a': ['a1', 'a3'],
'b': ['b1', 'b2', 'b3', 'b4']
}
输出应仅显示在dic2中但不在dic1中的项目,如下所示:
output = {
'a': 'a3',
'b': ['b3','b4']
}
nomatch = {
'c': ['c1','c2']
}
我是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
答案 0 :(得分:1)
您只需使用词典理解即可完成此操作。
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)
但是,我怀疑你在这个问题上犯了错误。
仅显示
中的项目dict2
但不在dict1
看起来像这样:
{
'a': ['a3'],
'b': ['b3', 'b4'],
'd': ['d1', 'd2']
}
这不是您提供的示例输出。