我使用的两本字典有相同的键。他们有列表作为价值。举个例子
a={'Q':[0, 0, 0], 'T'=[6, 0, 0, 0]......}
b={'Q':[0, 0], 'T'=[0, 6, 0, 0]........}
我必须检查两者中匹配的值有多少。我这样做了
def shared_keyvals(dict1, dict2):
return dict( (key, dict1[key])
for key in (set(dict1) & set(dict2))
if dict1[key] == dict2[key]
)
但它不会将 T=[6,0,0,0] 与 T=[0,6,0,0] 进行比较。
所以最终我想计算 b 与 a 相同的 no.values。因此,对于此示例,a 和 b 的相同值数量为 6(7 个)
答案 0 :(得分:1)
这有效:
def compare(a, b):
"""Compare two lists and add up the number of matching elements."""
a.sort()
b.sort()
if len(a) > len(b): # make a the shorter list
a, b = b, a
count = 0
for i in range(len(a)):
if a[i] == b[i]:
count += 1
return count
a={'Q':[0, 0, 0], 'T':[6,0,0,0]}
b={'Q':[0, 0], 'T':[0, 6, 0, 0]}
dictionary = {key : compare(a[key], b[key]) for key in a.keys()}
# {'Q': 2, 'T': 4}