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

时间:2014-10-16 01:20:28

标签: python nltk

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

这是代码的最后一部分:

fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
vocab[:200]

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

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

有关如何解决此问题的任何建议,以便它可以正确返回答案吗?

5 个答案:

答案 0 :(得分:38)

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

vocab = list(fdist1.keys())

答案 1 :(得分:6)

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

使用vocab = list(fdist1.keys())并没有给我最常用的50个单词 但fdist1.most_common(50)确实如此。

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

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

答案 2 :(得分:1)

要打印最常用的200个单词,请使用:     fdist1.most_common(200) 上面的代码行将返回200个最常用的单词作为键频对。

答案 3 :(得分:0)

如果你使用python 3试试:

fdist1.most_common(200)
相反,要获得200个最常用的单词。

答案 4 :(得分:0)

fdist1 = FreqDist(NSmyText)

vocab=fdist1.keys()

此代码在Python2.7中使用。 所以你应该做一些改变。 dic.keys()返回一个iteratable。所以使用:

list(fdist1.keys())