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 06 Python
实例说明Python中比较运算符的使用
May 13 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python定时任务sched模块用法示例
Jul 16 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
Python爬虫工具requests-html使用解析
Apr 29 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
Python 恐龙跑跑小游戏实现流程
Feb 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
模仿OSO的论坛(三)
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
用python写测试数据文件过程解析
2019/09/25 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
英语专业推荐信
2013/11/16 职场文书
银行员工辞职信范文
2014/01/20 职场文书
给校长的一封建议书
2014/03/12 职场文书
课外活动总结
2015/02/04 职场文书
百年孤独读书笔记
2015/06/29 职场文书
高三语文教学反思
2016/02/16 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
关于使用Redisson订阅数问题
2022/01/18 Redis
正则表达式基础与常用验证表达式
2022/06/16 Javascript
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技