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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
Python基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python 操作MySQL详解及实例
Apr 30 Python
python去掉空白行的多种实现代码
Mar 19 Python
python实现搜索文本文件内容脚本
Jun 22 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
怎么快速自学python
Jun 22 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
教你怎么用Python实现GIF动图的提取及合成
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
Protoss热键控制
2020/03/14 星际争霸
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php进程间通讯实例分析
2016/07/11 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python中时间模块的基本使用教程
2019/05/14 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
荷兰超市:DEEN
2018/03/14 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
服装电子商务创业计划书
2014/01/30 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
实习证明格式范文
2014/10/14 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python