我正在按照课堂作业的指示进行操作,我应该在文本文件中查找前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
有关如何解决此问题的任何建议,以便它可以正确返回答案吗?
答案 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())