我正在尝试使用FreqDist,它是Python中NLTK的一部分。 我试过这个示例代码:
fdist1 = FreqDist(text1)
vocabulary1 = fdist1.keys()
vocabulary1[:50]
但是最后一行给了我这个错误:
TypeError: 'map' object is not subscriptable
我认为代码在Python 2上运行良好,但在Python 3(我有)上它会产生上述错误。
为什么会出现此错误以及如何解决?我对此表示感谢。
答案 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]