我试图将一个列表按另一个列表排序,但它们并非100%相同
list1 = ["1 apple","2banana","mango"]
list2 = ["3bana2na 2+", "0.5 mango 1-", "apple2"]
Out: list1_ordered_by_list2 = ["2banana", "mango", "1 apple"]
我很高兴使用jellyish.levenshtein_distance()进行比较,但是我不确定如何将列表1中的每个元素与列表2中的每个元素进行比较,并返回按列表2顺序排序的列表1
值得一提的是,我的两个列表长度相同。然而,一个更通用的解决方案将是非常有价值的
如果两个列表的ITME数量不同,我可以得到它们之间的映射,这是一个额外的点。e、 g
list1 = ["1 apple","2banana","mango"]
list2 = ["3bana2na 2+", "0.5 mango 1-", "apple2", "apple"]
Out: list1_ordered_by_list2 = ["1 apple", "2banana", "mango"]
这可能相当复杂。如果需要进一步澄清,请告诉我。 我希望你能帮忙。 谢谢
下面是一种评论
请注意,下面的代码显示了实际的ld值。我们可以看到
(芒果)<-&燃气轮机;(apple2)比(芒果)的ld“更好”<-&燃气轮机;(0.5芒果1-)
输出的最后一行显示排序列表中元素的索引
输出
使用Lior的
rank
函数,可以使用difflib实现示例输出:或者用你的第一个例子:
对参考列表使用一种形式的模糊匹配可能会更快。您可以使用difflib中的regex module或get_close_matches:
您需要基于
jellyfish.levenshtein_distance()
创建一个排名函数,该函数返回最小距离的索引并将其交给排序相关问题 更多 >
编程相关推荐