NLTK python错误:"TypeError:'dict_keys'对象不可订阅"

use*_*644 30 python nltk

我正在按照课堂作业的指示进行操作,我应该在文本文件中查找前200个最常用的单词.

这是代码的最后一部分:

fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
vocab[:200]
Run Code Online (Sandbox Code Playgroud)

但是当我在词汇200行后按Enter键时,它返回:

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何建议,以便它可以正确地返回答案?非常感谢任何帮助:)谢谢

Kla*_* D. 54

看起来你正在使用Python 3.在Python 3中dict.keys()返回一个可迭代但不可索引的对象.最简单(但不那么有效)的解决方案是:

vocab = list(fdist1.keys())
Run Code Online (Sandbox Code Playgroud)

  • 您可能还编写了“ vocab = list(fdist1)”。 (2认同)
  • _Iterables_是python3中列表操作的基础,它们需要通过_list(iterable)_来完成:这很常见并不罕见。我抱怨一门语言试图学习如何更好地适应局限性。 (2认同)

小智 7

我正在使用python 3.5,我遇到了同样的问题 TypeError.

使用vocab = list(fdist1.keys())不会给我前50个最常用的单词.
但是fdist1.most_common(50).

此外,如果您只想显示前50个单词而不是频率,您可以尝试:

[word for (word, freq) in fdist1.most_common(50)]

  • 恕我直言,这是一个更有用的回复,因为它提供了most_common()函数的示例,这正是OP所要求的。 (2认同)