我可以将两个列表与嵌入式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'
答案 0 :(得分:0)
比较两个列表,你可以试试这个......
sorted(list1) == sorted(list2)
为了获得列表之间的差异,试试这个......
list(set(list1) - set(list2)) + list(set(list2) - set(list1))