TypeError:list indices必须是整数,而不是str。除了它是一个整数

时间:2015-11-09 22:40:26

标签: python python-3.x

参加我的第一门计算机科学课程,提前道歉可能是一个基本的错误。

这一点是打印用户输入的单词的排序索引(键位后面的位置)。

我已经研究过这个问题,但我仍然不知道为什么我会收到这个错误。它说明问题出现在第26行。 (打印(键+"" + sortIndex [键])< ---第26行

显然sortIndex [key]被视为字符串而不是整数。即使是我的实验室TA(仍然是学生)也无法解决这个问题。

第一个函数中的注释print语句用于显示索引在未经处理的情况下的含义。

def buildIndex(text):
    index = {}
    words = text.split()

    position = 0
    while position < len(words):
        nextWord = words[position]
        if nextWord in index.keys():
            ref = index[nextWord]
            ref.append(position)
            index[nextWord] = ref
        else:
            index[nextWord] = [position]
        position += 1

#    print(index)
    return index


def displayIndex(index):
    sortIndex = sorted(index.keys())
    for key in sortIndex:
        print(key + " " + sortIndex[key])

def main():
    text = str(input("Enter some text to index: "))
    displayIndex(buildIndex(text))

main()

感谢任何和所有帮助! 另外,这是我在这里的第一篇文章,所以如果我做错了,请告诉我(对不起)XD

2 个答案:

答案 0 :(得分:1)

def displayIndex(index):
    sortIndex = sorted(index.keys())
    for key in sortIndex:
        print(key + " " + sortIndex[key])

sortIndex是一个包含字典index中的(字符串)键的列表。然后,您尝试使用刚刚从sortIndex中取出的密钥编入sortIndex索引。我想您可能打算使用密钥来索引index。即:

print(key + " " + index[key])

答案 1 :(得分:0)

我添加了一个简单的print语句来检查:

def displayIndex(index):
    sortIndex = sorted(index.keys())
    print sortIndex
    for key in sortIndex:
        print key, type(key)
        print(key + " " + sortIndex[key])

输出显示您没有使用整数:

['I', 'Now', 'a', 'construct', 'rhyme', 'will']
I <type 'str'>

相反,请尝试查找单词的索引;我认为这就是你想要的。

def displayIndex(index):
    sortIndex = sorted(index.keys())
    print sortIndex
    for key in sortIndex:
        # print key, type(key)
        print(str(sortIndex.index(key)) + " " + key)

def main():
    text = "Now I will a rhyme construct"
    displayIndex(buildIndex(text))

main()的

这个输出是......

['I', 'Now', 'a', 'construct', 'rhyme', 'will']
0 I
1 Now
2 a
3 construct
4 rhyme
5 will