我有一个携带密钥的字典:值但它只保存最后一次迭代并丢弃之前的条目,它被重置?这是迭代的ctr和字典长度的输出
Return the complete Term and DocID Ref.
LENGTH:6960
CTR:88699
我的代码:
class IndexData:
def getTermDocIDCollection(self):
...............
for term in terms:
#TermDocIDCollection[term] = sourceFile['newid']
TermDocIDCollection[term] = []
TermDocIDCollection[term].append(sourceFile['newid'])
return TermDocIDCollection
答案 0 :(得分:1)
您注释掉的代码片段执行以下操作:
可悲的是,它会在每次迭代时执行相同的操作,因此您最终会将[last value]
分配给密钥。新代码(update
)执行类似的操作。在过去,你会这样做:
if term in TermDocIDCollection:
TermDocIDCollection[term].append(sourceFile['newid'])
else:
TermDocIDCollection[term] = [sourceFile['newid']]
或使用try
- except
的主题变体。添加collections
后,您可以改为:
from collections import defaultdict
# ... code...
TermDocIDCollection = defaultdict(list)
你会像这样更新它:
TermDocIDCollection[term].append(sourceFile['newid'])
无需检查字典中是否存在term
。如果没有,defaultdict
类型将首先调用您传递的构造函数(list
)来创建密钥的初始值