获得set.difference()速度的一种方法是使用模糊匹配



我能够比较两个嵌入了for循环的列表,但是速度相当慢。是否有一种方法可以使用set.difference()或其他一些技术来提高查找两个列表之间潜在模糊匹配的速度?

这是我的样本

matchdict = dicttype
if isinstance(matchdict, collections.defaultdict):
    for i, u in enumerate(list1):
        for i1, u1 in enumerate(list2):
            if func(u, u1) >= cutoff:
                pair = (u, u1)
                #print pair
                #shortstr = min(pair, key=len)
                #longstr = max(pair, key=len)           
                #matchdict[shortstr] = longstr
                matchdict[u].append(u1)
elif isinstance(matchdict, dict):
    for i, u in enumerate(list1):
        for i1, u1 in enumerate(list2):
            if func(u, u1) >= cutoff:
                pair = (u, u1)
                #print pair
                shortstr = min(pair, key=len)
                longstr = max(pair, key=len)           
                #matchdict[shortstr] = longstr
                matchdict[u] = u1     
print 'format is: list1 : list2'

要比较两个列表,您可以尝试这样做…

sorted(list1) == sorted(list2)

为了得到列表之间的差异,试试这个…

list(set(list1) - set(list2)) + list(set(list2) - set(list1))

最新更新