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 相关文章推荐
Django中处理出错页面的方法
Jul 15 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
Python编写Windows Service服务程序
Jan 04 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
解决yum对python依赖版本问题
Jul 05 Python
python 魔法函数实例及解析
Sep 25 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
解决reload(sys)后print失效的问题
Apr 25 Python
python绘制雷达图实例讲解
Jan 03 Python
实操Python爬取觅知网素材图片示例
Nov 27 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登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
php判断是否为json格式的方法
2014/03/04 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
pytorch 常用线性函数详解
2020/01/15 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
Python如何绘制日历图和热力图
2020/08/07 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
会议接待欢迎词
2014/01/12 职场文书
学校欢迎标语
2014/06/18 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
辩论赛新闻稿
2015/07/17 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript