首页 > 编程 > Python > 正文

Python查找相似单词的方法

2019-11-25 17:59:01
字体:
来源:转载
供稿:网友

本文实例讲述了Python查找相似单词的方法。分享给大家供大家参考。具体分析如下:

问题:

给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词。

Python代码如下:

from itertools import tee,izipfrom collections import defaultdictdef pairwise(iterable):  a, b = tee(iterable)  for elem in b:    break  return izip(a, b)buf_array=[]buf_no={}key_from_id=0def add_to_buf(word):  global key_from_id,buf_array  if len(word)==1:    pass    #TODO  for pos,pair in enumerate(pairwise(word)):    if len(buf_array)<pos+1:      buf_array.append(defaultdict(set))    pos_dict=buf_array[pos]    key=list(pair)    key.sort()    key="".join(key)    if key not in buf_no:      buf_no[key]=key_from_id      key_from_id+=1    key=buf_no[key]    pos_dict[key].add(word)def find_in_buf(word):  global key_from_id,buf_array  if len(word)==1:    pass    #TODO  exist = []  for pos,pair in enumerate(pairwise(word)):    if len(buf_array)<pos+1:      return      pos_dict=buf_array[pos]    key=list(pair)    key.sort()    key="".join(key)    if key not in buf_no:      continue    key=buf_no[key]    if key not in pos_dict:      continue    exist.append(pos_dict[key])  count_dict=defaultdict(int)  for i_set in exist:    for i in i_set:      count_dict[i]+=1  result=[]  min_match = len(word)-3  for k,v in count_dict.iteritems():    if v>=min_match:      result.append(k)  return resultadd_to_buf("1234")add_to_buf("ABCD")add_to_buf("CABD")print find_in_buf("ACBD")

希望本文所述对大家的Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表