Ответ 1
Похоже, вы используете Python 3. В Python 3 dict.keys()
возвращает итеративный, но не индексируемый объект. Наиболее простым (но не очень эффективным) решением будет:
vocab = list(fdist1.keys())
Я следую инструкциям для домашнего задания класса, и я должен найти 200 самых популярных слов в текстовом файле.
Вот последняя часть кода:
fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
vocab[:200]
Но когда я нажимаю ввод после строки vocab 200, она возвращает:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable
Есть предложения о том, как это исправить, чтобы он мог правильно вернуть ответ?
Похоже, вы используете Python 3. В Python 3 dict.keys()
возвращает итеративный, но не индексируемый объект. Наиболее простым (но не очень эффективным) решением будет:
vocab = list(fdist1.keys())
Я использую python 3.5
, и я отвечаю той же проблеме TypeError
.
Использование vocab = list(fdist1.keys())
не дает мне 50 наиболее часто используемых слов.
Но fdist1.most_common(50)
делает.
Кроме того, если вы просто хотите показать эти 50 лучших слов не с их частотой, вы можете попробовать:
[word for (word, freq) in fdist1.most_common(50)]
Чтобы печатать наиболее часто используемые 200 слов, используйте: fdist1.most_common (200) Вышеприведенная строка кода вернет 200 наиболее часто используемых слов в виде пары клавиш-частот.
Если вы используете python 3, попробуйте:
fdist1.most_common(200)
вместо этого, чтобы получить 200 наиболее часто встречающихся слов.
fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
Этот код используется в Python2.7. Поэтому вы должны сделать некоторые изменения. dic.keys() возвращает итерацию. Таким образом, используя:
list(fdist1.keys())