DDR爱好者之家 Design By 杰米
本文实例讲述了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程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2025年11月07日
2025年11月07日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]