在for循环中获取下一个变量

Xtr*_*ato 4 python for-loop

我是Python的新手,我确信有一种更简单的方法来完成我需要的东西但是这里有.

我正在尝试创建一个程序,该程序对所调用的字母列表执行频率分析,inputList并重新检索2个字母对并将它们添加到另一个字典中.所以我需要它用所有2个字母对填充第二个dictonary.

我有一个粗略的想法,我怎么能做到这一点,但我有点坚持使用语法来使它工作.

for bigram in inputList:
    bigramDict[str(bigram + bigram+1)] =  1
Run Code Online (Sandbox Code Playgroud)

bigram + 1是下一次迭代中的字母

作为一个例子,如果我要在文本中使用"stackoverflow",inputList我需要首先将字母"st"作为键,将1作为值.在第二次迭代"ta"作为关键等等.我遇到的问题是在不转移到下一次迭代的情况下,在下一次迭代中重新获取变量的值.

我希望我能清楚地解释自己.谢谢你的帮助

geo*_*org 5

获得序列的n-gram的直接方法是切片:

def ngrams(seq, n=2):
    return [seq[i:i+n] for i in range(len(seq) - n + 1)]
Run Code Online (Sandbox Code Playgroud)

结合这个,collections.Counter你就准备好了:

from collections import Counter
print Counter(ngrams("abbabcbabbabr"))
Run Code Online (Sandbox Code Playgroud)

如果你需要ngrams()懒惰:

from collections import deque

def ngrams(it, n=2):
    it = iter(it)
    deq = deque(it, maxlen=n)
    yield tuple(deq)
    for p in it:
        deq.append(p)
        yield tuple(deq)
Run Code Online (Sandbox Code Playgroud)

(有关后者的更优雅代码,请参见下文).