TypeError: list indices must be integers, nicht str (boolean-Konvertierung eigentlich)
import nltk
import random
from nltk.corpus import movie_reviews
documents=[(list(movie_reviews.words(fileid)),category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
#print(documents[1])
all_words=[]
for w in movie_reviews.words():
all_words.append(w.lower())
all_words=nltk.FreqDist(all_words)
word_features = list(all_words.keys())[:3000]
def find_features(document):
words = set(document)
features=[]
for w in word_features:
features[w]= (w in words)
return features
print((find_features(movie_reviews.words('neg/cv000_29416.txt'))))
featuresets = [(find_features(rev), category) for (rev,category) in documents]
After-run -,
Ich bin immer der Fehler
features[w]= (w in words)
TypeError: list indices must be integers, not str
Mir bitte helfen es zu lösen...
features
soll eine Liste oder ein dict ist ?features definiert als eine Liste oben, sollte ein dict zu akzeptieren strings als "Indizes"
Versuchen Sie Deklaration von Funktionen als dict-Funktionen = {} anstelle von features = []
Offensichtlich ein häufiger Fehler: TypeError: list indices must be integers, nicht str Python, Python: TypeError: list indices must be integers, nicht str, TypeError: string indices must be integers, nicht str auf Python Dictionary...
Dank @DerMechaniker ....Es funktioniert
InformationsquelleAutor RokiDGupta | 2016-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einzige änderung, die vorgenommen werden muss ist, dass
features
muss initialisiert werden, um einedict
({}
), anstatt einelist
([]
) und dann könnte man füllen, es ist Inhalt.Den
TypeError
war, weilword_features
ist eine Liste von strings, die Sie versuchen würden, den index mit Hilfe einer Liste und Listen können auch nicht string-Indizes.Hier, die Elemente, die in
word_features
bilden diekeys
Wörterbuch,features
holding Boolesche WerteTrue
basierend auf, ob das gleiche element inwords
(die hält einzigartige Elemente durch Aufruf vonset()
) undFalse
für die vice-versa situation.Wolf: Es ist mein bad. War ein bisschen Eile und daher konnte nicht die benötigte Erklärung.
Sie betonen
dict
undlist
, aber dies ist nicht automatisch gleichbedeutend zu{}
und[]
für Benutzer, die neu in python...Es ist arbeiten mit features ={}
InformationsquelleAutor Nickil Maveli
Haben Sie versucht zu index eine Liste
features
mit einer Schnur und es ist nicht möglich, mit python. Liste Indizes können nur ganze zahlen sein. Was Sie brauchen, ist eindictionary
.Versuchen Sie es mit einem
defaultdict
heißt, dass selbst wenn ein Schlüssel nicht im Wörterbuch gefunden, anstelle einerKeyError
geworfen wird, wird ein neuer Eintrag erstelltYou can also try
-- warum "auch", was die alternativen sind, die Sie referenzieren? Die einfachste Lösung? 😉Die Frage war schon beantwortet, bevor ich Einreichen könnte mir. So ist das Wort 'auch'
Ja, aber vielleicht ist die Antwort schon gegeben ist schlecht (ich glaube wirklich, dass): das werfen ein Stück code, und sagen, versuchen Sie, diese ist nicht hilfreich, siehe mein Kommentar. Ich würde vorschlagen, zu integrieren, ist die offensichtliche Lösung für das problem in deiner Antwort, und sagen ein paar mehr Worte über die Fehler der OP gemacht. Eine weitere alternative ist die link zu der Antwort (aber ich bin nicht wirklich darauf hindeutet das hier).
InformationsquelleAutor Mechanic