2013-11-23 39 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': ''}