比较字典键和值,并将不匹配的值放入列表中

时间:2017-03-10 05:29:23

标签: python dictionary

我需要比较以下两个词典:

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

1 个答案:

答案 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']
}

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