【发布时间】:2015-01-19 07:09:22
【问题描述】:
我是 python 的新手。给定文档标记列表,我需要创建一个倒排索引函数。该索引将每个唯一的单词映射到一个文档 ID 列表,按升序排序。
我的代码:
def create_index(tokens):
inverted_index = {}
wordCount = {}
for k, v in tokens.items():
for word in v.lower().split():
wordCount[word] = wordCount.get(word,0)+1
if inverted_index.get(word,False):
if k not in inverted_index[word]:
inverted_index[word].append(k)
else:
inverted_index[word] = [k]
return inverted_index, wordCount
注意:当输入参数的格式为 {1:"Madam I am Adam",2: "I have never been afraid of him"}
时,这可以正常工作
我为上面的例子得到的输出:
{'madam': [1], 'afraid': [2], 'i': [1, 2], 'of': [2], 'never': [2], 'am': [1], 'been': [2], 'adam': [1], 'have': [2], 'him': [2]}
根据我的代码 K,v 对应列表的键和值
当我们使用参数调用 create_index 函数时所需的输出:
index = create_index([['a', 'b'], ['a', 'c']])
>>> sorted(index.keys())
['a', 'b', 'c']
>>> index['a']
[0, 1]
index['b']
[0]
index['c']
[1]
【问题讨论】:
-
[[1:'a', 'b'], [2:'a', 'c']]不是合法的python。你的意思是某种字典?其次,sorted(index.keys())应该失败,因为create_index返回一个元组,而不是一个字典,并且元组没有.keys()方法。所以,请告诉我们你实际使用的是什么 -
另外,输出中的 index['c'] 是什么?你没说。
-
@inspectorG4dget
sorted接受任何类型的可迭代;并且该函数应该返回一个字典(一个索引)。 -
@poke:
return inverted_index, wordCount.keys 方法 -
@inspectorG4dget desired 输出与 OP 解决此问题的尝试几乎没有关系 :)
标签: python list inverted-index