返回给出两个字典的公共元素的值

时间:2016-02-17 08:18:59

标签: dictionary

我一直试图绕过这个带有两个dict {}的函数,并得到一个键值Value的公共值,而这个值又被传递给一个函数f(),该函数将被定义出来功能:

我试过这个:

def dicts_interdiff( d1, d2 ) :
    dict1 = dict(filter(lambda (k,v) : k in d2 and d2[k] == v, d1.items()))
    dict2 = dict(filter(lambda (k,v) : k not in d1 and d1[k] != v, d2.items()))
    return dict1, dict2

我把这个测试传给了它:

d1 = {'1':10, '2':20, '3':30, '4':40}
d2 = {'1':10, '4':40, '5':50, '6':60}

result = dicts_interdiff(d1,d2)
print(result)

这是输出:

({}, {'1': 10, '3': 30, '2': 20, '5': 50, '4': 40, '6': 60})

有人能指出我正确的方向吗?谢谢

1 个答案:

答案 0 :(得分:0)

我不知道您使用k not in d1 and d1[k] != v时收到错误消息的原因。

def dicts_interdiff( d1, d2 ) :
    dict1 = dict(filter(lambda (k,v) : k in d2 and d2[k] == v, d1.items()))
    dict2 = dict(filter(lambda (k,v) : k not in d1 or d1[k] != v, d2.items()))
    return dict1, dict2

并使用你的d1,d2将返回({'1':10,'4':40},{'5':50,'6':60})