3

我正在尝试在 Python 中使用作为 NLTK 一部分的 FreqDist。我试过这个示例代码:

fdist1 = FreqDist(text1)
vocabulary1 = fdist1.keys()
vocabulary1[:50]

但最后一行给了我这个错误:

TypeError: 'map' object is not subscriptable

我认为代码在 Python 2 上运行良好,但在 Python 3(我拥有的)上它给出了上述错误。

为什么会出现此错误以及如何解决?我很感激这方面的任何帮助。

4

2 回答 2

5

在 Python 3.keys()中返回一个迭代器,你不能对它进行切片。在切片之前将其转换为列表。

fdist1 = FreqDist(text1)
vocabulary1 = fdist1.keys()
x = list(vocabulary1)[:50]
# or...
vocabulary1 = list(fdist1.keys())
x = vocabulary1[:50]
于 2013-11-14T14:51:51.927 回答
1

您必须先将其转换为列表:

new_vocab= list(vocabulary1)
...= new_vocab[:50]
于 2013-11-14T14:51:22.713 回答