【发布时间】:2020-01-27 11:04:44
【问题描述】:
我想使用集合逻辑计算准确性。我会用一个例子来解释:
对于这两个词典:
d1 = {1: {'hello', 'goodbye'}, 2:{'sayonnara'}, 3:{'origami'}}
d2 = {1: {'goodbye'}, 2:{'hola', 'bye'}, 3:{'bird','origami','giraffe'}}
我想得到这个结果:
{1: 0.5, 2: 0, 3: 0.3333333333333333}
我是这样做的:
from collections import defaultdict
acc=defaultdict(list)
for (k,v1) in d1.items():
for (k,v) in d2.items():
nb=len(v1.intersection(v))
if (nb>0):
print(nb)
acc[k] = nb/ (abs(len(v) - len(v1))+1)
print(acc)
if k not in acc.keys():
acc[k] = 0
还有比这更有效的解决方案吗?
【问题讨论】:
-
@DeepSpace 抱歉,我的示例中有一个错误,对于 1,它是 0.5,因为它只有 2 个元素中的 1 个是正确的,而对于 3,它有 3 个元素中的 1 个是正确的。
-
我们可以假设
d1和d2将始终包含相同的键吗? -
是的 d1 和 d2 有相同的键。
标签: python python-3.x dictionary set