2013-11-23 63 views
1

我和一個朋友正在研究一個項目,我們已經能夠找到字典裏所有的第一個字母,此代碼:創建一個從以前的單詞詞典中的所有字母轉換的詞典?

def findFirstLetter(aDict): 
    for i in aDict: 
     aDict[i]=i[0:2] 
    return(aDict) 

我們正在努力讓這樣的另一個功能,而是找到休息將每個單詞中的過渡轉換成新的詞典。

例如:

以字典字{_steam_} 並給我們{'st':'','te':'','ea':'','am':'','m_':''}

編輯:謝謝你的快速反應,第一時間在網站上,以便將不得不讓使用如何的事情在這裏跑來跑去。要開始嘗試這種做法的不同方式,你們建議。如果任何人都好奇,該項目是基於製作馬爾可夫模型。

+0

查看文檔的'itertools' *配對*配方 - 這將是一個有用的起點 –

回答

0
>>> word = 'steam' 
>>> for i in range(len(word)): 
...  print word[i:i+2] 
... 
st 
te 
ea 
am 
m 

大概要算這些,如果一對字母出現不止一次。

>>> pairs = {} 
>>> n = 2 
>>> word = 'banana' 
>>> for i in range(len(word)): 
...  pair = word[i:i+n] 
...  pairs[pair] = pairs.get(pair, 0) + 1 
... 
>>> pairs 
{'a': 1, 'na': 2, 'ba': 1, 'an': 2} 
>>> 

如果你希望所有的pairs的關鍵是相同的長度,n,可以追加一個標記字符,像這樣:

>>> pairs = {} 
>>> for i in range(len(word)): 
...  pair = word[i:i+n] 
...  pair += '$' * (n - len(pair)) 
...  pairs[pair] = pairs.get(pair, 0) + 1 
... 
>>> pairs 
{'na': 2, 'a$': 1, 'ba': 1, 'an': 2} 
>>> 
1

你基本上是在尋找bigrams。這是簡單的Python:

def bigrams(token): 
    return (token[i:i+2] for i in range(len(token)-1)) 

例子:

>>> dict((g, '') for g in bigrams("_steam_")) 
{'_s': '', 'te': '', 'ea': '', 'm_': '', 'st': '', 'am': ''}