Skip to main content
 首页 » 编程设计

python之优化两个列表之间的元素明智的模糊匹配

2025年05月04日14lovecherry

我有两个不同格式的公司列表(较长列表中有 > 2k 个条目)需要统一。我知道这两种格式大约 80% 的时间共享一个 stub ,所以我使用模糊匹配来比较两个列表:

def get_fuzz_score(str1, str2): 
 
    from fuzzywuzzy import fuzz 
    partial_ratio = fuzz.partial_ratio(str1, str2) 
    return partial_ratio 
 
 
a = ['Express Scripts', 'Catamaran Corp', 'Banmedica SA (96.7892%)', 'WebMD', 'ODC', 'Caremerge LLC (Stake%)'] 
b = ['Doctor on Demand', 'Catamaran', 'Express Scripts Holding Corp', 'ODC, Inc.', 'WebMD Health Services', 'Banmedica'] 
 
for i in b: 
    for j in a: 
        if get_fuzz_score(i, j) > 80: 
            # process 

我很感激关于如何优化此任务以提高性能的想法(例如,不必使用 2 个 for 循环)。

请您参考如下方法:

首先,我会将 import from fuzzywuzzy import fuzz 从函数移动到文件的开头。

接下来,您似乎想要检查每个元素,所以无论如何您都在比较 all2all,但我没有看到简单的解决方法。

如果数据“不错”,那么您可以进行一些简单的启发式操作,例如在第一个字母上(来自您发布的示例 - 但这取决于数据)。

最好的问候

附言如果我的分数足够高,我会发表评论。