我如何计算两个词典有多少个共同值?
比实际情况要复杂一点:
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”没有共同点
答案 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'}}