如何计算字典中的常用值?

时间:2019-12-03 15:13:18

标签: python python-3.x list dictionary

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

比实际情况要复杂一点:

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 = {}

我想找出共有多少个“ val”,比如说“ 1”和“ 2”。因此,我看第二个字典,由于1和2都包含'val1',因此我创建了一个新字典d3 = {'val1' : 1}


  • 从评论中复制

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

1 个答案:

答案 0 :(得分:0)

像这样吗?

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'}}