gpt4 book ai didi

python - 计算两个列表字典之间的相似性的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:52:16 28 4
gpt4 key购买 nike

我想使用集合逻辑来计算准确性。我将用一个例子来解释:

对于这两个词典:

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

还有比这更有效的解决方案吗?

最佳答案

如果我们在两个字典具有相同键的假设下进行操作,则可以通过单个循环的字典理解来完成:

print({k1: (len(v1.intersection(d2[k1])) / (abs(len(v1) - len(d2[k1])) + 1))
for k1, v1 in d1.items()})

输出

{1: 0.5, 2: 0.0, 3: 0.3333333333333333}

为了安全起见,可以通过确保我们只考虑两个字典之间的公共(public)键来概括这一点。

print({common_key: (len(d1[common_key].intersection(d2[common_key])) / (abs(len(d1[common_key]) - len(d2[common_key])) + 1))
for common_key in d1.keys() & d2.keys()})

关于python - 计算两个列表字典之间的相似性的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59929874/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com