Мои цели состоят в том, чтобы иметь список списков, в которых каждый элемент во внешнем списке содержит слово в его первом индексе и количество раз, когда оно встретило его во втором индекс. В качестве примера, он должен выглядеть следующим образом:Ошибка Python «индекс индекса вне диапазона»
[["test1",0],["test2",4],["test3",8]]
Единственная проблема в том, что, когда я пытаюсь, например, доступ к слову «test1» с первым внутрипартийным списка, я получаю индекс вне диапазона ошибка. Вот мой код, как я пытаюсь сделать это:
stemmedList = [[]]
f = open(a_document_name, 'r')
#read each line of file
fileLines = f.readlines()
for fileLine in fileLines:
#here we end up with stopList, a list of words
thisReview = Hw1.read_line(fileLine)['text']
tokenList = Hw1.tokenize(thisReview)
stopList = Hw1.stopword(tokenList)
#for each word in stoplist, compare to all terms in return list to
#see if it exists, if it does add one to its second parameter, else
#add it to the list as ["word", 0]
for word in stopList:
#if list not empty
if not len(unStemmedList) == 1: #for some reason I have to do this to see if list is empty, I'm assuming when it's empty it returns a length of 1 since I'm initializing it as a list of lists??
print "List not empty."
for innerList in unStemmedList:
if innerList[0] == word:
print "Adding 1 to [" + word + ", " + str(innerList[1]) + "]"
innerList[1] = (innerList[1] + 1)
else:
print "Adding [" + word + ", 0]"
unStemmedList.append([word, 0])
else:
print "List empty."
unStemmedList.append([word, 0])
print unStemmedList[len(unStemmedList)-1]
return stemmedList
Конечный результат заканчивает тем, что:
Список пуст. [ "test1", 0] Список не пуст»
Краш с индексом список из ошибок диапазона, который указывает на линию if innerList[0] == word
Почему бы не использовать 'Counter'? Это именно то, для чего это нужно. – cmd
Ваш 'else: print 'Список пуст.' 'Statement находится внутри цикла. Вы имели в виду эту линию? – Celeo