在下面的代码中,我需要dict中的leaf元素
group_children_map={'Mould': ['Yeast'], 'Living Organism': ['Animal', 'Plant', 'Mould'], 'Animal': ['Lion', 'Tiger', 'Cat', 'DOG'], 'Plant': ['Tulsi', 'Hibiscus', 'Aloe Vera']}
print group_children_map
node='Living Organism'
leaf_list=[]
def find_leaf(node):
try_leaf=group_children_map.get(node)
if try_leaf is None:
#print node
return node
else:
print try_leaf,"list"
for l in try_leaf:
#print l
leaf_list.append(find_leaf(l))
find_leaf(node)
print leaf_list
预期输出:
['Lion', 'Tiger', 'Cat', 'DOG', 'Tulsi', 'Hibiscus', 'Aloe Vera', 'Yeast']
实际结果:
['Lion', 'Tiger', 'Cat', 'DOG', None, 'Tulsi', 'Hibiscus', 'Aloe Vera', None, 'Yeast', None]
为什么没有人被添加到列表中…需要帮助:/
您的
find_leaf()
函数并不总是显式返回某些内容。当函数刚结束时,返回None
。你知道吗只有当
try_leaf is None
为true时,函数才会返回某些内容。如果为false,则递归调用find_leaf()
,但在这些递归调用之后,不会显式返回任何内容。你知道吗您可以显式测试这种情况:
或者将
leaf_list
附加到代码的另一个分支,而不是返回:@Martin Pieters已经提供了你的答案,如果你想使用这个方法而不附加任何内容的话,只需要一个小插件
代码
相关问题 更多 >
编程相关推荐