TypeError:'map'对象在Python 3中不是可订阅的错误

时间:2013-11-14 14:39:35

标签: python nltk typeerror

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

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

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

TypeError: 'map' object is not subscriptable

我认为代码在Python 2上运行良好,但在Python 3(我有)上它会产生上述错误。

为什么会出现此错误以及如何解决?我对此表示感谢。

2 个答案:

答案 0 :(得分:5)

在Python 3 .keys()中返回一个迭代器,你无法切片。在切片之前将其转换为列表。

fdist1 = FreqDist(text1)
vocabulary1 = fdist1.keys()
x = list(vocabulary1)[:50]
# or...
vocabulary1 = list(fdist1.keys())
x = vocabulary1[:50]

答案 1 :(得分:1)

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

new_vocab= list(vocabulary1)
...= new_vocab[:50]