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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
python中加背景音乐如何操作
Jul 19 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
python 写一个文件分发小程序
Dec 05 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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 日期加减的类,很不错
2009/10/10 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php日历制作代码分享
2014/01/20 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
js读取cookie方法总结
2014/10/31 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
JS实现手风琴特效
2020/11/08 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
说一说Python logging
2016/04/15 Python
django文档学习之applications使用详解
2018/01/29 Python
Python的argparse库使用详解
2018/10/09 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
项目资料员岗位职责
2013/12/10 职场文书
小班秋游活动方案
2014/02/22 职场文书
党代会心得体会
2014/09/04 职场文书
迎国庆主题班会
2015/08/17 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书