DeBug记录:'dict_keys' object is not subscriptable
程序员文章站
2022-03-23 12:54:55
...
问题背景
学习《python自然语言处理》这本书的时候,有如下代码
>>> fdist1 = FreqDist(text1)
>>> vocabulary1 = fdist1.keys()
>>> vocabulary1[:50]
按照讲解,最后一段代码应当输出text1文本中前50个出现频率最高的词汇,然后实际允许时,结果如下:
错误分析
错误信息的字面意思是说,这是一个类型错误,‘dict_keys’类型的对象不能进行索引操作。
由于我是刚接触自然语言处理中的nltk,不了解这个数据类型都有哪些操作,而且家里的网也实在是一言难尽上不去NLTK的官网,不过可以先看一下vocabulary1这个变量的内容
从输出结果上看,这个变量类型是小括号包着中括号,类似于:(['a', 'b', 'c']),这并不是一个列表,所以不能进行索引操作。至于产生这个错误的原因,有推测是版本不同导致的,《python自然语言处理》这本书使用的还是python2,而且使用的nltk版本也是2.0,很有可能之前生成的vocabulary1变量类型是列表类型。
解决方法
了解问题原因之后,一个简单可行的解决方法就是通过类型转换,将vocabulary1转为list类型,代码如下
list(vocabulary1)[:50]
此时结果如下:
上一篇: HOG特征计算及实现(python)
下一篇: 【Debug】Linux error汇总