gpt4 book ai didi

python - 给定两个相同长度的 python 列表。如何返回相似值的最佳匹配?

转载 作者:太空狗 更新时间:2023-10-29 21:15:13 25 4
gpt4 key购买 nike

给定两个带有字符串的 python 列表(人名):

list_1 = ['J. Payne', 'George Bush', 'Billy Idol', 'M Stuart', 'Luc van den Bergen']
list_2 = ['John Payne', 'George W. Bush', 'Billy Idol', 'M. Stuart', 'Luc Bergen']

我想要一个最相似的名字的映射。

'J. Payne'           -> 'John Payne'
'George Bush' -> 'George W. Bush'
'Billy Idol' -> 'Billy Idol'
'M Stuart' -> 'M. Stuart'
'Luc van den Bergen' -> 'Luc Bergen'

在 python 中有没有一种巧妙的方法来做到这一点?这些列表平均包含 5 或 6 个名称。有时更多,但这种情况很少。有时每个列表中只有一个名字,拼写可能略有不同。

最佳答案

使用此处定义的函数:http://hetland.org/coding/python/levenshtein.py

>>> for i in list_1:
... print i, '==>', min(list_2, key=lambda j:levenshtein(i,j))
...
J. Payne ==> John PayneGeorge Bush ==> George W. BushBilly Idol ==> Billy IdolM Stuart ==> M. StuartLuc van den Bergen ==> Luc Bergen

You could use functools.partial instead of the lambda

>>> from functools import partial
>>> for i in list_1:
... print i, '==>', min(list_2, key=partial(levenshtein,i))
...
J. Payne ==> John PayneGeorge Bush ==> George W. BushBilly Idol ==> Billy IdolM Stuart ==> M. StuartLuc van den Bergen ==> Luc Bergen

关于python - 给定两个相同长度的 python 列表。如何返回相似值的最佳匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com