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

如何基于重复计数对比两个列表以发现相似性?

两个带重复计数的列表相似性自动对比方法

我希望找出两个列表之间的相似性。列表第一列为重复计数,第二列为模式值。请问无需手动操作的最合理对比方法是什么?

列表内容

List1:

11 | 55
4  | 31
4  | 1
3  | 22
2  | 13
1  | 81

List2:

7  | 31
6  | 22
6  | 13
4  | 88
3  | 14
1  | 55

最优自动对比方案

因为列表的核心是**模式值(第二列)的重叠情况,同时重复计数(第一列)**反映模式的出现频次,对比需要兼顾这两个维度,无需手动操作的话,以下两种方法最实用:

1. Python脚本量化对比(灵活可控)

把列表转换成字典(键为模式值,值为重复计数),通过代码自动计算相似度、统计重叠/独有模式值,示例代码如下:

# 定义两个列表
list1 = [(11, 55), (4, 31), (4, 1), (3, 22), (2, 13), (1, 81)]
list2 = [(7, 31), (6, 22), (6, 13), (4, 88), (3, 14), (1, 55)]

# 转换为模式值:重复计数的字典
dict1 = {val: cnt for cnt, val in list1}
dict2 = {val: cnt for cnt, val in list2}

# 计算共同模式值集合
common_values = set(dict1.keys()) & set(dict2.keys())
# 计算共同模式的总计数权重
total_common = sum(dict1[v] + dict2[v] for v in common_values)
# 计算所有模式的总计数权重
total_all = sum(dict1.values()) + sum(dict2.values())
# 加权相似度(百分比)
similarity = total_common / total_all * 100

# 输出结果
print(f"加权相似度:{similarity:.2f}%")
print(f"共同模式值:{sorted(common_values)}")
print(f"List1独有模式值:{sorted(set(dict1.keys()) - common_values)}")
print(f"List2独有模式值:{sorted(set(dict2.keys()) - common_values)}")

运行后会得到量化的相似度分数,以及清晰的重叠/独有模式统计,完全自动完成对比。

2. Excel自动对比(适合非编程用户)

  • 将两个列表分别导入Excel,比如List1的模式值放A列、计数放B列;List2的模式值放C列、计数放D列
  • 用VLOOKUP匹配共同模式值:在E2输入=VLOOKUP(A2,$C:$D,2,FALSE),下拉后,空值对应List1的独有模式值
  • 统计相似度:用SUMIF计算共同模式的总计数,再除以所有模式的总计数得到加权相似度;用COUNTIF统计共同模式的数量占比
  • 用条件格式高亮共同模式值,直观查看重叠部分

核心提醒

对比时不能只看模式值是否重叠,必须结合重复计数的权重——比如模式值55在两个列表都存在,但List1的计数11远大于List2的1,这种频次差异会直接影响相似性的判断,加权计算能更准确反映真实的相似程度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:50:08