Python 多级默认字典

Python multi level default dict

我正在倒置 index.For 这个目的是我从文件的 file.Each 值中获取值,格式为:

document_Id'\t'term_Id'\t'pos_1'\t'pos_2...'\t'pos_n

这是一个正向索引representation.I想把它转换成倒排索引应该是这样的

term_Id'\t'"doc_Id:pos1,pos2...posn""doc_Id:pos1,pos2...posn"

为此,我使用列表的默认字典 type.This 是我的函数:

nestedDict = defaultdict(lambda:defaultdict(list))

def getInfo(line):
    global nestedDict
    tokens = re.split(r'\t+',line)
    docInfo = int(tokens[0]) #Set document Id
    termId = int(tokens[1]) #Set Term Id
    currentPosition = int(tokens[2])
    nestedDict[str(termId)][str(docInfo)] = str(currentPosition)        
    if len(tokens) > 3 :
        for i in range(3,len(tokens)):
            position = int(tokens[i])-currentPosition
            currentPosition = currentPosition + position
            nestedDict[str(termId)][str(docInfo)].append(currentPosition)

它给我一个 error:Str has no method .append。 我是 python.Any 的新手,将不胜感激。

您的嵌套 defaultdict 使 nestedDict[...][...] 成为 list,但您随后为其分配了一个字符串。我认为您无论如何都不需要该分配:为什么不让循环处理所有位置?