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部署到Centos7全攻略
Sep 26 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python3正则提取字符串里的中文实例
Jan 31 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
简单了解Python读取大文件代码实例
Dec 18 Python
python中图像通道分离与合并实例
Jan 17 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
python 异步async库的使用说明
May 04 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 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过滤危险html代码
2008/08/18 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
python多线程和多进程关系详解
2020/12/14 Python
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
店长岗位的工作内容
2013/11/12 职场文书
会计辞职信范文
2014/01/15 职场文书
cf收人广告词大全
2014/03/14 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
党委班子剖析材料
2014/08/21 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
入党政审材料范文
2014/12/24 职场文书
人事文员岗位职责
2015/02/04 职场文书