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进行异常值分析实例代码
Dec 07 Python
python绘制条形图方法代码详解
Dec 19 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
python之mock模块基本使用方法详解
Jun 27 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
python3实现mysql导出excel的方法
Jul 31 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
使用Tkinter制作信息提示框
Feb 18 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
神经网络训练采用gpu设置的方式
Mar 03 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的错误信息
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
了解重排与重绘
2019/05/29 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
浅谈python常用程序算法
2019/03/22 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
关于Java String的一道面试题
2013/09/29 面试题
干部作风建设工作总结
2014/10/29 职场文书
公诉意见书范文
2015/06/05 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技
Moment的feature导致线上bug解决分析
2022/09/23 Javascript