我有2个字典,比如说
dict1 = {'a': ['xxx', 'yyy', 'zzz'], 'b': ['xxx', 'ab', 'ac', 'ed']}
dict2 = {1: ['fgh', 'yyy', 'iy'], 2: ['xxx', 'ax', 'ac', 'yyy']}
我想将字典的每个键的每个值与其他字典进行比较,并返回匹配值的数量。
例如,如果我将词典 dict1 的键&#39; a&#39; 的值与字典 dict2 进行比较,它应该将计数作为&#39; 1&#39; ,&#39; 2&#39; 返回,因为值&#39; yyy&#39;使用&#39; 1&#39; 和值&#39; xxx&#39; 和&#匹配 dict2 39; yyy&#39; 与 dict2 匹配&#39; 2&#39; 。同样在下一次迭代中,我应该将字典 dict1 的键&#39; b&#39; 的值与字典 dict2 值<进行比较/ p>
我可以知道,如何做这个python
答案 0 :(得分:0)
这是你在找什么?
dict1 = {'a': ['xxx', 'yyy', 'zzz'], 'b': ['xxx', 'ab', 'ac', 'ed']}
dict2 = {1: ['fgh', 'yyy', 'iy'], 2: ['xxx', 'ax', 'ac', 'yyy']}
dict3 = {k: [len(set(v) & set(l)) for l in dict2.values()] for k, v in dict1.items()}
print(dict3) # {'a': [1, 2], 'b': [0, 2]}
请注意,由于字典不关心订单,因此无法保证订单。所以结果也可能是{'a': [2, 1], 'b': [0, 2]}
例如..
也许这种变化更好:
dict3 = {k: {subk: len(set(v) & set(subv)) for subk, subv in dict2.items()} for k, v in dict1.items()}
print(dict3) # {'a': {1: 1, 2: 2}, 'b': {1: 0, 2: 2}}
# ^key of dict1 ^ ^
# | |key of dict2
# |count
答案 1 :(得分:0)
你走了:
dict1 = {'a': ['xxx', 'yyy', 'zzz'], 'b': ['xxx', 'ab', 'ac', 'ed']}
dict2 = {1: ['fgh', 'yyy', 'iy'], 2: ['xxx', 'ax', 'ac', 'yyy']}
results = {}
for key1 in dict1:
results[key1] = set() # create a new entry for each dict1's key
for value in dict1[key1]:
for key2 in dict2:
if value in dict2[key2]:
results[key1].add(key2) # store key2 if value match
print(results) # {'b': {2}, 'a': {1, 2}}