两个字典中字符串值的全对比较

2024-09-27 00:13:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本字典,dict1和dict2。字典包含键作为ID,值作为字符串。我需要对dict1中的所有值与dict2中的所有其他值执行所有对比较。在

我正在使用很慢的代码。我的实际数据在每个dict中包含大约100000个值。有没有其他“有效”的方法来做同样的事情。在

import difflib
dict1 = {"111": "asdfa", "222":"gdjkgd", "333":"xvbkx"}
dict2 = {"311": "asdfa", "322":"gdjkzxgd", "333":"xvvbkx"}
qKeys = sorted(dict2.keys())
#Write the header in outfile
nline = "ref"+ "\t" + "\t".join(qKeys) + "\n"
print(nline)
for item in dict1:
    ratioArr = []
    refseq = dict1[item]
    for qitem in qKeys:
        qSeq = dict2[qitem]
        myratio = round(difflib.SequenceMatcher(None, refseq, qSeq).ratio(),2)
        ratioArr.append(str(myratio))
    #print(myratio)
    nline = item + "\t" + "\t".join(ratioArr)+"\n"
    print(nline)

Tags: infor字典itemprintjoindifflibrefseq
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:56

我的建议是,首先,使用比difflib更快的东西,difflib是纯python。在

您应该检查是否可以使用levenshtein distance。如果可以,可以使用pylevenshtein。在

最后,您需要确定哪个字符串与哪个字符串匹配—这是一个assignment problem。使用hungarian algorithm可以有效地解决这个问题。该算法的一个常用实现是munkres。在

相关问题 更多 >

    热门问题