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从网络读取图片并直接进行处理的方法
May 22 Python
Python 处理数据的实例详解
Aug 10 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
python实现点击按钮修改数据的方法
Jul 17 Python
Python3列表List入门知识附实例
Feb 09 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
Python何绘制带有背景色块的折线图
Apr 23 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
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
JsRender for object语法简介
2014/10/31 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
python中的闭包用法实例详解
2015/05/05 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python爬虫增加访问量的方法
2019/08/22 Python
python 有效的括号的实现代码示例
2019/11/11 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
经典大学生求职信范文
2014/01/06 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
python process模块的使用简介
2021/05/14 Python
vscode中使用npm安装babel的方法
2021/08/02 Javascript