【发布时间】:2022-01-19 12:47:42
【问题描述】:
问题来了: 我想定义一个函数,该函数将在 2 个列表(大小不同)中使用 blur.ration() 比较字符串比率。 它应该返回列表 1 中的实体,这些实体与第二个相比,至少有一个大于 60 的比率。
def Matching(list1, list2):
no_matching = []
matching = []
for item1 in list1:
for item2 in list2:
m_score = fuzz.ratio(item1, item2)
if m.score < 60:
no_matching.append(item1)
if m.score > 60:
matching.append(item1)
return(matching, no_matching)
输出不是我的目标。 我在哪一部分做错了 - 为了只获取列表 1 中的项目,如果它们与列表 2 至少有一个匹配 大于 60.
例如:
list1 = ["Real Madrid", "Benfica", "Lazio", "FC Milan"]
list2 = ["Madrid", "Barcelona", "Milan"]
for item1 in list1:
for item2 in list2:
m_score = fuzz.ratio(item1, item2)
print(item1, "&", item1, m_score)
输出是:
Real Madrid & Madrid 71 # greater than 60
Real Madrid & Barcelona 20
Real Madrid & Milan 12
Benfica & Madrid 15
Benfica & Barcelona 50
Benfica & Milan 17
Lazio & Madrid 36
Lazio & Barcelona 29
Lazio & Milan 20
FC Milan & Madrid 29
FC Milan & Barcelona 24
FC Milan & Milan 77 # greater than 60
函数输出应该是:
matching = ["Real Madrid", "FC Milan"] # since they have at least one ratio bigger than 60
no_matching = ["Benfica", "Lazio"]
【问题讨论】:
-
您当前的输出是多少?你只得到 list1 中最后一个匹配的元素吗?
-
@KabilanMohanraj 我编辑了问题
-
你可以查看我的答案
标签: python string list function