首页 > 解决方案 > 如何计算字典中的常见值?

问题描述

如何计算两个字典有多少共同值?

它实际上比这要复杂一些:

d1 = {'1':['4','2','3'], '2':['4','3',], '3':['4','6','7']}
d2 = {'1': ['val1','val2'], '2': ['val1', 'val3', 'val4'], '4': ['val1', 'val2', 'val3', 'val4'], '6': ['val2']}
d3 = {}

我想知道有多少“vals”,比如“1”和“2”,有共同点。然后我查看第二个字典,因为 1 和 2 都包含“val1”,所以我创建了一个新字典d3 = {'val1' : 1}


让我澄清一下,数字可以是两个字典的一部分,但 vals 只在第二个字典中。除了这两个字典之外,我的函数基本上只接受一个参数,所以假设我们的参数是“1”。它应该查看第一个字典,查看该列表,然后在第二个字典中找到这些值(作为键),然后找到 d1 中的 '1' 及其值在 d2 中的共同点。所以'1'和4有'val1'和'val2'共同点,'1'和'2'有'val1'共同点,'1'和'3'没有共同点

标签: pythonpython-3.xlistdictionary

解决方案


像这样的东西?

d1 = {'1':['4','2','3'], '2':['4','3',], '3':['4','6','7']}
d2 = {'1': ['val1','val2'], '2': ['val1', 'val3', 'val4'], '4': ['val1', 'val2', 'val3', 'val4'], '6': ['val2']}
d3 = {}

def find_common_element(foo):
    result = {}
    if foo in d1 :
        for elem in d1[foo]:
            if str(elem) in d2 :
                common = set(d2['1']) & set(d2[str(elem)])
                result[str(elem)] = common
    return result


print("check 1")
print(find_common_element('1'))
print("check 2")
print(find_common_element('2'))
print("check 3")
print(find_common_element('3'))

输出 :

check 1
{'4': {'val2', 'val1'}, '2': {'val1'}}
check 2
{'4': {'val2', 'val1'}}
check 3
{'4': {'val2', 'val1'}, '6': {'val2'}}

推荐阅读