You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写Sørensen-Dice系数计算函数报错求解

报错原因

你的代码错误本质是混淆了集合对象和集合的元素计数两个概念,公式里的|X|符号代表集合的元素个数,不是集合本身:

  • _a.intersection(_b)的返回值是交集集合(你的测试用例里结果是{3, 4},属于set类型),直接拿整数2和集合做乘法,自然会触发你看到的类型错误。
  • Python原生集合不支持+运算符,就算修了前面的乘法问题,后面写_a + _b也会抛出类型错误,这部分同样需要取集合长度再做加法。
修正方案

用Python内置的len()函数获取集合的元素个数,再代入公式计算即可,修正后的可运行代码如下:

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

def dice(a, b):
    _a = set(a)
    _b = set(b)
    # 分别计算交集大小、两个集合的自身大小
    intersection_len = len(_a.intersection(_b))
    total_len = len(_a) + len(_b)
    return 2 * intersection_len / total_len

# 调用测试,输出结果为0.5
print(dice(a, b))

针对你给出的测试用例,两个集合交集有2个元素,两个集合各有4个元素,代入公式计算结果为(2*2)/(4+4) = 0.5,符合Sørensen-Dice系数的计算预期。

内容的提问来源于stack exchange,提问作者Paul347

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:36:17