降低python中嵌套循环的时间复杂度

降低python中嵌套循环的时间复杂度,python,time-complexity,Python,Time Complexity,这是我的密码。它需要17个小时才能完成。你能建议其他代码来减少计算时间吗 # test algorithm1 - fuzzy matched_pair = [] for x in dataset1['full_name_eng']: for y in dataset2['name']: if (fuzz.token_sort_ratio(x,y) > 85): matched_pair.append((x,y)) pr

这是我的密码。它需要17个小时才能完成。你能建议其他代码来减少计算时间吗

# test algorithm1 - fuzzy
matched_pair = []
for x in dataset1['full_name_eng']:
    for y in dataset2['name']:
        if (fuzz.token_sort_ratio(x,y) > 85):
            matched_pair.append((x,y))
            print((x,y))
我尝试了不同的方法,但没有成功

数据集1-10行, 数据集2-1M行,
fuzz.token_sort_ratio(x,y)-是一个函数,它接受2个参数(2个字符串)并输出整数-这2个字符串的相似性

,因为这里没有真正使用数据帧,所以我将仅处理以下两个列表:

导入字符串
随机输入
随机种子(18)
dataset1=[''.join(random.choice(string.ascii_小写+'')表示范围内的u(random.randint(13,20)),表示范围内的s(1000)]
dataset2=[''.join(random.choice(string.ascii_小写+'')表示范围内的u(random.randint(13,20)),表示范围内的s(1000)]
将这两个列表与您使用fuzzyfuzzy提供的代码一起使用。作为第一个更改,您可以使用(我是作者)这基本上与fuzzyfuzzy相同,但速度要快得多。当使用我的测试列表时,速度大约是您的代码的7倍。另一个问题是,当使用fuzz.token\u sort\u ratio时,字符串总是小写的,例如标点符号被删除。虽然这对字符串匹配很有意义,但您多次这样做r列表中的每个字符串,当处理较大的列表时,这些字符串相加。在这些列表上使用RapidFuzz和只预处理一次的速度大约是原来的14倍

从rapidfuzz导入fuzz,utils
dataset2_processed=[utils.default_进程(x)用于dataset2中的x]
dataset1_processed=[utils.default_进程(x)用于dataset1中的x]
匹配的_对=[]
对于word1,在zip中处理word1(数据集1,数据集1已处理):
对于word2,在zip中处理word2(数据集2,数据集2已处理):
如果fuzz.token\u sort\u ratio(字1\u已处理,字2\u已处理,处理器=无,分数\u截止=85):
匹配的\u pair.append((word1,word2))

您能提供更多详细信息吗?什么是数据集1?它有多大?您能发布该数据的样本数据吗?什么是模糊?拆分列表并并行处理。请参阅。请参阅,我已编辑了问题-添加了一些详细信息。您可以查看位置敏感哈希(LSH)为更快的相似字符串搜索。谢谢!一个较弱的算法,但快5倍!