报错信息
学习《机器学习实战》这本书时,按照书上的代码运行,产生了错误,但是在代码中没有错误提示,产生错误的代码如下:
firstStr = myTree.keys()[0]
print('树的叶子结点个数为:\n{}'.format(getNumLeafs(myTree)))
报错如下:
错误原因
首先我们先看一下报错:
TypeError: 'dict_keys' object does not support indexing
翻译过来是:
类型错误:'dict_keys'对象不支持索引
错误产生是因为版本不同,作者使用的是2.x版本,而我使用的是3.6版本。
解决方案
对于3.x版本,因为python3改变了dict.keys,返回的是dict_keys对象,支持iterable 但不支持indexable,我们可以将其明确的转化成list。将代码改为如下:
firstSides = list(myTree.keys())
firstStr = firstSides[0]#找到输入的第一个元素
或者可以改成下面:
firstStr = list(myTree.keys())[0]#找到输入的第一个元素
然后运行就可以啦!