为什么没有存储所有的数据?

2024-10-02 20:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典key:value however 它只保存最后一次迭代并丢弃以前的条目,在哪里重置??这是迭代的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

Tags: thekeyreturn字典value条目重置complete
1条回答
网友
1楼 · 发布于 2024-10-02 20:38:44

注释掉的代码执行以下操作:

  1. 设置键的值(删除以前存在的内容(如果存在的话))
  2. 为键设置新值(空列表)
  3. 将步骤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),为键创建初始值

相关问题 更多 >