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 04 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
python对execl 处理操作代码
Jun 22 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
浅析python中特殊文件和特殊函数
Feb 24 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获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python爬取51job中hr的邮箱
2016/05/14 Python
基于python实现聊天室程序
2018/07/27 Python
Django 视图层(view)的使用
2018/11/09 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python 实用工具状态机transitions
2020/11/21 Python
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
医学院学生的自我评价分享
2013/11/19 职场文书
给儿子的表扬信
2014/01/15 职场文书
财产公证书格式
2014/04/10 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android