如何比较两个具有列表值的字典?



我使用的两个字典具有相同的键。他们有价值清单。所以示例

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]并没有进行比较

所以最终我要计算no。b和a的值是一样的,所以在这个例子中没有。a和b相同的值是6 (out Of 7)

这行得通:

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}

相关内容

  • 没有找到相关文章

最新更新