Python查找相似单词的方法


Posted in Python onMarch 05, 2015

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

问题:

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

Python代码如下:

from itertools import tee,izip
from collections import defaultdict
def pairwise(iterable):
  a, b = tee(iterable)
  for elem in b:
    break
  return izip(a, b)
buf_array=[]
buf_no={}
key_from_id=0
def 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 result
add_to_buf("1234")
add_to_buf("ABCD")
add_to_buf("CABD")
print find_in_buf("ACBD")

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

Python 相关文章推荐
Python中实现对list做减法操作介绍
Jan 09 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
python async with和async for的使用
Jun 20 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python 实现多线程下载视频的代码
Nov 15 Python
python实现梯度下降和逻辑回归
Mar 24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
python logging模块的使用详解
Oct 23 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 Python
七个非常实用的Python工具包总结
Jun 15 Python
Python兔子毒药问题实例分析
Mar 05 #Python
Python获取服务器信息的最简单实现方法
Mar 05 #Python
Python实现简单的可逆加密程序实例
Mar 05 #Python
Python装饰器的函数式编程详解
Feb 27 #Python
python分析nignx访问日志脚本分享
Feb 26 #Python
python分析apache访问日志脚本分享
Feb 26 #Python
Python构造函数及解构函数介绍
Feb 26 #Python
You might like
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
深入浅出php socket编程
2015/05/13 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
Js基础学习资料
2010/11/23 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
JSONP之我见
2015/03/24 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python elasticsearch环境搭建详解
2019/09/02 Python
python输入错误后删除的方法
2019/10/12 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
应届护士推荐信
2013/11/16 职场文书
教师节活动主持词
2014/04/02 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书