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 yield机制的异步操作同步化编程模型
Mar 18 Python
Django中的文件的上传的几种方式
Jul 23 Python
Python多图片合并PDF的方法
Jan 03 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
在django模板中实现超链接配置
Aug 21 Python
Python如何使用字符打印照片
Jan 03 Python
对python中arange()和linspace()的区别说明
May 03 Python
python如何写try语句
Jul 14 Python
Python读写压缩文件的方法
Jul 30 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
PHP类型约束用法示例
2016/09/28 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Scrapy的简单使用教程
2017/10/24 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
Python txt文件如何转换成字典
2020/11/03 Python
Python try except finally资源回收的实现
2021/01/25 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
党小组推荐意见
2015/06/02 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis