Bigrams频率在str和dict理解中

时间:2016-10-10 13:03:33

标签: python-3.x

我想用'bigram:frequency'获取字典,其中bigram = str [i] + str [i + 1]。所以这是我的解决方案:

f_dict = {}

for i in range(0, len(string) - 1, step):
    if string[i] + string[i + 1] in f_dict:
        f_dict[string[i] + string[i + 1]] += 1
    else:
        f_dict[string[i] + string[i + 1]] = 1

是否可以在一行中用dict理解来写这个,或者是否有更好的解决方案(在性能的意义上)?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

s = 'abaabaab' # Your string
# Dictionary comprehension
dic = {k : s.count(k) for k in {s[i]+s[i+1] for i in range(len(s)-1)}}

结果:

In[2]: dic
Out[3]: {'aa': 2, 'ab': 3, 'ba': 2}