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网络爬虫采集联想词示例
Feb 11 Python
python实现bitmap数据结构详解
Feb 17 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
用Python进行TCP网络编程的教程
Apr 29 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
Python基于当前时间批量创建文件
May 07 Python
Python实现一个优先级队列的方法
Jul 31 Python
Django admin组件的使用
Oct 24 Python
Python实现老照片修复之上色小技巧
Oct 16 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正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
javascript时间函数大全
2014/06/30 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
python使用scrapy解析js示例
2014/01/23 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
django解决跨域请求的问题详解
2019/01/20 Python
django使用admin站点上传图片的实例
2019/07/28 Python
python 求定积分和不定积分示例
2019/11/20 Python
基于python调用psutil模块过程解析
2019/12/20 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
门卫人员岗位职责
2013/12/24 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2015年科室工作总结
2015/04/10 职场文书
卫生主题班会
2015/08/14 职场文书
600字作文之感受大自然
2019/11/27 职场文书