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中writelines()方法的使用
May 25 Python
python 容器总结整理
Apr 04 Python
详解python基础之while循环及if判断
Aug 24 Python
python字符串的方法与操作大全
Jan 30 Python
Python交互环境下实现输入代码
Jun 22 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
详解Python字典小结
Oct 20 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Python Matplotlib绘制动画的代码详解
May 30 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
Content-type 的说明
2006/10/09 PHP
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python sys.argv用法实例
2015/05/28 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
简单了解Python write writelines区别
2020/02/27 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
电气工程和自动化自荐信范文
2013/12/25 职场文书
车队司机自我鉴定
2014/03/02 职场文书
主办会计岗位职责
2014/03/13 职场文书
男性健康日的活动方案
2014/08/18 职场文书
模范教师材料大全
2014/12/16 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Python如何让字典保持有序排列
2022/04/29 Python