You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从二维列表中获取与目标列表相似度最高的两个子列表

获取匹配度最高的两个子列表

嘿,这问题很好解决!你已经成功算出了每个子列表和list_g的相似度,接下来只需要把子列表和对应的相似度分数绑定在一起,然后按分数排序,再取前两个就搞定啦。

我给你修改并完善了代码,直接就能用:

list_j = [[100,2,3], [4,98,99], [5,99,98]]
list_g = [100,99,98]
import difflib

# 将每个子列表与它的相似度分数配对
matched_pairs = []
for element in list_j:
    similarity = difflib.SequenceMatcher(None, element, list_g).ratio()
    matched_pairs.append( (similarity, element) )

# 按相似度从高到低排序(reverse=True 表示降序)
matched_pairs.sort(reverse=True)

# 提取前两个匹配度最高的子列表
top_two_matches = [pair[1] for pair in matched_pairs[:2]]

print("匹配度最高的两个子列表:", top_two_matches)

代码解释:

  • 配对子列表与分数:我们把每个子列表和它的相似度组成元组,这样就能保证分数和对应的子列表不会脱节。
  • 排序:Python的sort()方法对元组排序时,会优先比较第一个元素(也就是相似度分数),加上reverse=True就会从高到低排列。
  • 提取结果:用列表推导式从排序后的元组里取出子列表,取前两个就是你要的匹配度最高的两个对象。

运行这段代码,你会得到输出:

匹配度最高的两个子列表: [[5, 99, 98], [100, 2, 3]]

(注:因为前两个子列表的相似度都是0.333,排序后它们的顺序会和原列表一致,如果你想调整它们的顺序,也可以在排序时加入额外规则,但这个结果已经完全符合你的需求啦。)

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

火山引擎 最新活动