从以前的单词词典创建所有字母过渡的字典?

时间:2013-11-23 23:16:43

标签: python dictionary

我和一位朋友正在研究一个项目,我们已经能够使用以下代码找到字典的所有首字母:

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

我们正在尝试创建另一个这样的函数,而是在每个单词中找到其余的过渡并将它们放入一个新的字典中。

例如:

带一个单词{_steam_}的字典 给我们{'st':'','te':'','ea':'','am':'','m_':''}

编辑:感谢您的快速回复,第一次来到网站,所以必须利用这里的事情。你们开始尝试不同的方式来做这个。该项目基于制作马尔可夫模型,如果有人好奇的话。

2 个答案:

答案 0 :(得分: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': ''}

答案 1 :(得分: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}
>>>