Python查找相似单词的方法
本文实例讲述了Python查找相似单词的方法。分享给大家供大家参考。具体分析如下:
问题:
给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词。
Python代码如下:
fromitertoolsimporttee,izip
fromcollectionsimportdefaultdict
defpairwise(iterable):
a,b=tee(iterable)
foreleminb:
break
returnizip(a,b)
buf_array=[]
buf_no={}
key_from_id=0
defadd_to_buf(word):
globalkey_from_id,buf_array
iflen(word)==1:
pass
#TODO
forpos,pairinenumerate(pairwise(word)):
iflen(buf_array)<pos+1:
buf_array.append(defaultdict(set))
pos_dict=buf_array[pos]
key=list(pair)
key.sort()
key="".join(key)
ifkeynotinbuf_no:
buf_no[key]=key_from_id
key_from_id+=1
key=buf_no[key]
pos_dict[key].add(word)
deffind_in_buf(word):
globalkey_from_id,buf_array
iflen(word)==1:
pass
#TODO
exist=[]
forpos,pairinenumerate(pairwise(word)):
iflen(buf_array)<pos+1:
return
pos_dict=buf_array[pos]
key=list(pair)
key.sort()
key="".join(key)
ifkeynotinbuf_no:
continue
key=buf_no[key]
ifkeynotinpos_dict:
continue
exist.append(pos_dict[key])
count_dict=defaultdict(int)
fori_setinexist:
foriini_set:
count_dict[i]+=1
result=[]
min_match=len(word)-3
fork,vincount_dict.iteritems():
ifv>=min_match:
result.append(k)
returnresult
add_to_buf("1234")
add_to_buf("ABCD")
add_to_buf("CABD")
printfind_in_buf("ACBD")
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下