我正在使用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)
输入:
- 我的递归树的级别 -
- full_tree - 与父母和孩子的词典
{<Category: test>: {<Category: dkddk>: {}, <Category: test2>: {<Category: test3>: {}, <Category: test5>: {<Category: kfpokpok>: {}}}}
功能应返回:当前级别的所有对象
救命!谢谢!
答案 0 :(得分:2)
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()]))
答案 1 :(得分:1)
itemsOnLevel = lambda r, l: (
lambda f, r, l: f (f, r, l) ) (
lambda f, r, l: [_ for _ in r.keys () ] if not l else
[i for k in r.values () for i in f (f, k, l - 1) ], r, l)
答案 2 :(得分:0)
我想这会有所帮助
if(full_tree != {}):
for node in return_list_current_level(full_tree):
items_on_level(node, level+1)
else:
return None
答案 3 :(得分:0)
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()