Python查找相似單詞的方法
本文實(shí)例講述了Python查找相似單詞的方法。分享給大家供大家參考。具體分析如下:
問題:
給你一個單詞a,如果通過交換單詞中字母的順序可以得到另外的單詞b,那么定義b是a的兄弟單詞?,F(xiàn)在給你一個字典,用戶輸入一個單詞,讓你根據(jù)字典找出這個單詞有多少個兄弟單詞。
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程序設(shè)計有所幫助。
相關(guān)文章
Python中數(shù)字(Number)數(shù)據(jù)類型常用操作
本文主要介紹了Python中數(shù)字(Number)數(shù)據(jù)類型常用操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python數(shù)據(jù)庫安裝及MySQL?Connector應(yīng)用教程
這篇文章主要為大家介紹了Python數(shù)據(jù)庫安裝及MySQL Connector應(yīng)用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)詳解【數(shù)字、字符串、列表、元組、集合、字典】
這篇文章主要介紹了Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu),結(jié)合實(shí)例形式分析了Python數(shù)字、字符串、列表、元組、集合、字典等基本數(shù)據(jù)類型功能、原理及相關(guān)使用技巧,需要的朋友可以參考下2019-06-06Python裝飾器的應(yīng)用場景及實(shí)例用法
在本篇內(nèi)容里小編給大家整理了一篇關(guān)于Python裝飾器的應(yīng)用場景及實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04python中列表推導(dǎo)式與生成器表達(dá)式對比詳解
python當(dāng)然不是一門編譯型語言,但是它還是要被解析成二進(jìn)制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關(guān)于python中列表推導(dǎo)式與生成器表達(dá)式對比的相關(guān)資料,需要的朋友可以參考下2023-01-01Python實(shí)現(xiàn)簡易凱撒密碼的示例代碼
密碼的使用最早可以追溯到古羅馬時期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來傳遞信息,即所謂的“愷撒密碼”。本文將利用Python實(shí)現(xiàn)簡易的凱撒密碼,感興趣的可以了解一下2022-09-09