【发布时间】:2011-05-03 00:34:53
【问题描述】:
说,
term='asdf'; InvertedIndex = {}; InvertedIndex[term] = [1,2,2,2,4,5,6,6,6,6,7].
现在我们有了这个不计数的函数。任何项目的发生。这是我遇到问题的功能。
def TF(term, doc):
idx = InvertedIndex[term].index(doc)
return next(i for i, item in enumerate(InvertedIndex[term][idx:])
if item != doc)
TF(term, 1) 为 1,TF(term, 2) 为 3,TF(term, 4) 为 1。到目前为止还好。
但它为TF(term, 7) 提供了 StopIteration 错误。如果我有InvertedIndex[term] = [7] 并调用TF(term, 7),它也会给出同样的错误。如何解决?
编辑: 澄清功能的目标。该功能应该算不上。项的发生次数。考虑到使用的示例 TF(term, 2) 必须返回 3,因为它在 InvertedIndex[term] 中出现了 3 次
解决方案:
def TF(term, doc):
return InvertedIndex[term].count(doc)
【问题讨论】:
-
我认为你应该使用
collections.Counter。 -
如果您在 python >= 2.7 上并且想要计算每个项目,那么计数器很好
标签: python