我有一个关于python的递归方法问题,代码如下:
class NodeTree(object):
def __init__(self, name, children):
self.name = name
self.children = children
def count(self):
# 1 + i children's nodes
count = 1
for c in self.children:
count += c.count()
return count
def create_tree(d):
N = NodeTree(d['name'], d['children'])
print N.count()
d1 = {'name':'musica', 'children':[{'name':'rock', 'children':[{'name':'origini','children':[]},
{'name':'rock&roll','children':[]},
{'name':'hard rock', 'children':[]}]},
{'name':'jazz', 'children':[{'name':'origini', 'children':[{'name':'1900', 'children':[]}]},
{'name':'ragtime', 'children':[]}, {'name':'swing', 'children':[]}]}]}
tree = create_tree(d1)
错误是:
^{pr2}$我什么都试过了,但没用。在
不管怎样,有什么建议吗? 谢谢!在
d['children']
是一个list of dict
,如您在d1
dict中所见现在,当你在你的}作为每个元素:
children
上迭代时,在NodeTree
中,本质上只有d['children']
,你将得到{所以你得到了那个错误。在
好吧,有一次,
create_tree
函数不会递归地构建树。所以只需在零级上添加一个节点,子节点就是字典。在下面的(修改过的)代码(虽然类型很快而且很草率)应该执行递归 树的构造。没有检查您的
count
代码,但假设它是正确的,它应该可以工作。在这是因为Python字典没有
count
方法。在如果我们逐行检查你的代码实际在做什么,这会有帮助。在
这是因为我们通过了d1【‘children’】自己的孩子,这是一个字典列表:
[<dict>, <dict>, <dict>, ... ]
。在而不是
^{pr2}$count()
,你应该做的是调用字典上的len
,以获得它拥有的键数,从而变成:相关问题 更多 >
编程相关推荐