Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python递归树(for循环)_Python - Fatal编程技术网

Python递归树(for循环)

Python递归树(for循环),python,Python,我正在python上开发基于树的程序。我需要使用递归重写此函数,并清除所有这些for循环: 我的函数示例: def items_on_level(full_tree, level): for key0, value0 in full_tree.items(): for key1, value1 in value0.items(): for key2, value2 in value1.items(): for key

我正在python上开发基于树的程序。我需要使用递归重写此函数,并清除所有这些for循环:

我的函数示例:

def items_on_level(full_tree, level):
    for key0, value0 in full_tree.items():
        for key1, value1 in value0.items():
            for key2, value2 in value1.items():
                for key3, value3 in value2.items():
                    print(key3)
输入:
-级别-我的递归树的级别
-全树-与父母和孩子一起听写

{<Category: test>: {<Category: dkddk>: {}, <Category: test2>: {<Category: test3>: {}, <Category: test5>: {<Category: kfpokpok>: {}}}}

函数应返回:当前级别上的所有对象


救命!谢谢!

我想这会有点帮助

def itemsOnLevel(root, level):
  if not level:
    return list(root.keys())
  else:
    return list(itertools.chain.from_iterable([itemsOnLevel(v, level-1) for k,v in root.items()]))
if(full_tree != {}):

    for node in return_list_current_level(full_tree):
        items_on_level(node, level+1)
else:
    return None

中的
做了什么?我想我知道这是为哪门课做的。我想知道我是否应该给教授发封电子邮件。我不认为有什么好的理由用Python编写递归lambda表达式。使用正则函数,它会让你少伤脑筋。@Blckknght好吧,如果不是obvi,我的答案不会是这样的我们知道这是一个家庭作业。但它仍然有效…非常感谢!可以将此函数重写为模板标记吗?我不明白为什么不应该。还有一个问题。如何编写返回所有子对象的模板标记(从字典全文树)。问题是模板应该使用变量。类似这样:{{child item_name}}item_name-对象的名称现在对我来说是最重要的。如果您能帮助我,我将不胜感激。我正在尝试创建一个树,但不幸的是,我无法使用mptt和其他库。谢谢。
if(full_tree != {}):

    for node in return_list_current_level(full_tree):
        items_on_level(node, level+1)
else:
    return None
def onl(r,l):
  if l:
    obj=[]
    for i in [onl(v,l-1) for v in r.values()]:
      obj.extend(i)
    return obj
  return r.keys()