Python报错:TypeError: 'dict_keys' object does not support indexing(机器学习实战treePlotter代码)解决方案

错误信息:

学习《机器学习实战》这本书时,按照书上的代码运行,产生了错误,但是在代码中没有错误提示,产生错误的代码如下:

firstStr = myTree.keys()[0]
print('树的叶子结点个数为:\n{}'.format(getNumLeafs(myTree)))

报错如下:

firstStr = myTree.keys()[0]
TypeError: 'dict_keys' object does not support indexing

把错误信息翻译一下:类型错误:dict_keys 对象不支持索引

错误产生是因为版本不同,作者使用的是2.x版本,而我使用的是3.7.x版本。

解决方案

对于3.x版本,因为python3改变了dict.keys,返回的是dict_keys对象,支持iterable 但不支持indexable,我们可以将其明确的转化成list

把错误代码修改成如下:

firstSides = list(myTree.keys()) 
firstStr = firstSides[0] # 找到输入的第一个元素
# or 
firstStr = list(myTree.keys())[0] # 找到输入的第一个元素

此时运行就可以了。

参考文章:Here

posted @ 2021-11-02 14:38  RioTian  阅读(373)  评论(0编辑  收藏  举报