gpt4 book ai didi

python - 在 python 中循环遍历树层次结构?

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:07 24 4
gpt4 key购买 nike

我是新来的,对 python 还很陌生!

我们有一份作业,我已经可以完成剩下的作业了,但还有一个问题:如果我有这样的树层次结构:

root = [
parent1 = [
child1,
child2 = [
sub_child
]
child3
],
parent2 = [
child1,
child2
]
]

而且它们都是一个名为TreeHierarchyClass 的类的实例,它们都有一个name 属性,我如何才能找到我输入的name 的那个?

我尝试使用 for 循环,但无法知道我需要多少循环?获取名称很容易:

name = input("Enter name: ")
if name == TreeHierarchyObject.name:
print("Found it!")

但是我该如何循环对象呢?

最佳答案

你应该在这里使用简单的递归。该方法在一定程度上取决于您的子对象如何附加到父对象。

如果它们在 self.children 列表中,这个方法就有效,我建议这样做。只需在您的类中定义以下方法:

def findObjectByName(self, name):
if self.name == name:
return self
else:
for child in self.children:
match = child.findObjectByName(name)
if match:
return match

编辑:要使其适用于任何属性,而不仅仅是名称,请改用 getattr():

def findObject(self, attr, value):
if getattr(self, attr) == value:
return self
else:
for child in self.children:
match = child.findObject(attr, value)
if match:
return match

只需调用 root.findObjectByName("Sub Child!") 或使用第二种方法:root.findObject("name", "Sub Child!")

关于python - 在 python 中循环遍历树层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13711187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com