在不使用(集合)库的情况下查找bigram的数量



我是python的新手,目前我真的很困。我的任务是弄清楚给定字符串中有哪些bigram,以及它们出现的频率。它使用集合库工作(你可以在下面看到我所需要的(,但我想看看在不使用任何库的情况下是如何做到的。

from collections import Counter 

string = "ababbababab"
result = Counter(string[x:x+2] for x in range(len(string) - 1)) 
print("Bigram Frequency : " + str(dict(result)))

谢谢大家!

首先使用列表理解获得bigram列表:

bigrams = [string[x:x+2] for x in range(len(string) - 1)]

然后统计列表中每个二元的出现次数:

bigram_counts = [bigrams.count(i) for i in bigrams]

然后,我们将带有计数的bigram值压缩,并将其转换为字典。字典中不可能存在重复的关键字,所以您最终会得到一个唯一的二元图及其相应计数的列表:

result = dict(zip(bigrams,bigram_counts))

输出print("Bigram Frequency : " + str(result)):

Bigram Frequency : {'ab': 5, 'ba': 4, 'bb': 1}

相关内容

最新更新