我正在计算一些特定的二元词频率。 以下是我的代码的一部分。
sorted_bigrams = sorted(bigrams.items(), key = lambda pair:pair[1], reverse = True)
for bigram, count in sorted_bigrams:
if bigram == ("interesting", "news"):
print count
在这里,我想存储打印结果的计数数“count”,这是bigram的计数数“有趣,新闻”
我该怎么办..
答案 0 :(得分:0)
如果您想存储总数:
sorted_bigrams = sorted(bigrams.items(), key = lambda pair:pair[1], reverse = True)
total_count = 0
for bigram, count in sorted_bigrams:
if bigram == ("interesting", "news"):
print count
total_count += count
print total_count
如果您想跟踪计数的细分:
sorted_bigrams = sorted(bigrams.items(), key = lambda pair:pair[1], reverse = True)
counts = []
for bigram, count in sorted_bigrams:
if bigram == ("interesting", "news"):
print count
counts.append(count)
print counts
答案 1 :(得分:0)
如果bigrams
是一个将bigram存储为密钥且计为值的字典,则您不需要对其进行排序以获得总计数,因为密钥是唯一的。
如果bigrams
是元组列表,您可以使用collections.Counter
来获取总计数。
In [30]: bigrams
Out[30]: [(('a', 'b'), 10), (('d', 'f'), 3), (('a', 'c'), 15), (('a', 'b'), 2)]
In [31]: counter = Counter()
In [32]: for key, val in bigrams:
counter[key] += val
....:
In [33]: counter[('a', 'b')]
Out[33]: 12