类型错误:元组索引必须是整数,而不是str?

2024-04-20 11:28:29 发布

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

我试图解析一个树,但是我得到了以下错误。类型错误:元组索引必须是整数,而不是str?在

def parseExpression(expression):
    nodeMap = dict()
    counter = 1
    node = ""
    retExp =""
    for char in expression:
        if char == '(' or char == ')' :
            if (len(node) > 0):
                nodeMap[str(counter)] = node;
                retExp += str(counter)
                counter +=1
            retExp += char
            node =""
        elif char == ' ': continue
        else :
            node += char
    return retExp,nodeMap

def printTree(tree, node, nodeMap):
    if node not in tree:
        return 
    print ('%s -> %s' % (nodeMap[node], ' '.join(nodeMap[child] for child in tree[node])) )
    for child in tree[node]:
        printTree(tree, child, nodeMap)

expression = " ( Root( SQ ( VBZ ) ( NP ( DT ) ( NN ) ) ( VP ( VB ) ( NP ( NN ) ) ) ))"
expression, nodeMap = parseExpression(expression)
tree = parseExpression(expression)
printTree(tree, tree[''][0], nodeMap)

输出:

^{pr2}$

有人能帮忙调试这个程序吗,任何帮助都很感激谢谢。在

Traceback (most recent call last):
  File "C:/Python33/refd.py", line 29, in <module>
    printTree(tree, tree[''][0], nodeMap)
TypeError: tuple indices must be integers, not str

Tags: innodechildtreeforif错误counter
2条回答

似乎名称树指向的是元组,因此不存在tree['']。 树应该指向字典吗?在

返回两个值retExp和nodeMap。因此,retemap包含树(retemap)。在

我假设你想把字典里的东西打印出来,这是元组中的第二个元素。所以你可以做的是:

t,tree = parseExpression(expression)
printTree(tree, tree[''][0], nodeMap)

但是,请稍候,这会产生另一个错误,因为在该字典中没有用键“”存储的内容。所以我决定印一本字典,我看到的是:

^{pr2}$

不仅没有键“”,所有项都将自身作为值包含。这不是你这里的一棵树。在

相关问题 更多 >