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 14 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
python 读取文件并替换字段的实例
Jul 12 Python
Django如何自定义分页
Sep 25 Python
详解python中eval函数的作用
Oct 22 Python
Python numpy数组转置与轴变换
Nov 15 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 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采集神器cURL使用方法详解
2016/02/19 PHP
PHP实现简易blog的制作
2016/10/24 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
深入探究node之Transform
2017/07/20 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
react结合bootstrap实现评论功能
2020/05/30 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
后勤工作职责
2013/12/22 职场文书
办理生育手续介绍信
2014/01/14 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
党性观念心得体会
2014/09/03 职场文书
城南旧事观后感
2015/06/11 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL