我是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}