似乎使用 update 应该很简单,而且我认为我使用它正确,所以它必须是处理类型或其他东西的错误。
但无论如何,这里是坐:
我正在为 Coursera 课程做课程作业(不用说,答案最小化或遮挡代码最有帮助!)并且被困在最后一个问题上。任务是返回一个集合,其中包含包含查询中所有单词的所有文档。该函数接受一个 inverseIndex,一个包含单词作为键的字典和包含这些单词作为值的文档,例如:{'a':[0,1],'be':[0,1,4].....}
我尝试实现的方法非常简单:获取一组集合,其中每个集合都包含文档 ID 列表,然后调用 .intersections(sets) 将集合合并到仅包含文档的集合中包含查询中所有单词的文档的 ID。
def andSearch(inverseIndex, query):
sets = set()
s = set()
for word in query:
s.update(inverseIndex[word])
print(inverseIndex[word])
print s
s.intersection(*sets)
return s
不幸的是,这会返回 inverseIndex 中的所有文档,而它应该只返回索引“3”。
终端输出:
[0, 1, 2, 3, 4]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3]
[0, 1, 3, 4]
[2, 3, 4]
set([0, 1, 2, 3, 4])
怎么了?
非常感谢!
sets = []
s = set()
for word in query:
sets.append(inverseIndex[word])
print sets
s.intersection(*sets)
return s
输出:
[[0, 1, 2, 3, 4], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3], [0, 1, 3, 4], [2, 3, 4]]
set([])
logout