Python 如何计算给定多个父节点的子体?

Python 如何计算给定多个父节点的子体?,python,data-structures,tree,Python,Data Structures,Tree,下面给出了一些数据,其中特征表示[id,name,age,parent 1 id,parent 2 id] [[0,'john',12,3,4],[1,'rachel',25,3,4],[2,'carol',10,1,5], [3, 'maggie',40,,], [4,'peter',50,,],[5,'mike',30,,] 我怎样才能找到彼得的后代数量呢?既然雷切尔、约翰和卡罗尔是他们的后代,所以应该是3岁 在python中实现这一点的最佳方法是什么。我在考虑一个树型数据结构,但我对如何

下面给出了一些数据,其中特征表示
[id,name,age,parent 1 id,parent 2 id]

[[0,'john',12,3,4],[1,'rachel',25,3,4],[2,'carol',10,1,5], [3, 'maggie',40,,], [4,'peter',50,,],[5,'mike',30,,]
我怎样才能找到彼得的后代数量呢?既然雷切尔、约翰和卡罗尔是他们的后代,所以应该是3岁

在python中实现这一点的最佳方法是什么。我在考虑一个树型数据结构,但我对如何实现它感到困惑

我的方法是使用hashmap,如下所示:

hmap = {}
for i in range(1,len(data)):
    for j in range(1,len(data)):
        if data[i][0] == data[j][3] or data[i][0] == data[j][4]:
            if data[i][1] in hmap:
                hmap[data[i][1]] +=1
            else:
                hmap[data[i][1]] =1
            print(data[i][1], data[j][1])
但那只会给孩子们带来麻烦。然后我需要添加孩子的孩子


任何指导都将不胜感激

理想情况下,我建议使用分隔的SQL表,将
作为布尔值选中,并进行长时间迭代。
尽管如此,您仍然可以使用双
list
结构来尝试此操作,即
list\u id\u to\u check
和list\u id\u checked:

def find_子代(父代id,个人):
列表\u id\u to\u check=[父\u id]
列表_id_checked=[]
列表子体ID=[]
尽管如此:
如果未列出要检查的\u id\u:
打破
对于id\u至\u签入列表\u id\u至\u签入:
亲自出席者:
如果身份证持有人[-2:]:
如果人员[0]不在列表\u子代\u ID中:
列出子代ID。追加(人员[0])
如果人员[0]不在列表\u id\u检查中且人员[0]不在列表\u id\u检查中:
列出要检查的\u id。\u。追加(人员[0])
列出要检查的id。删除(要检查的id)
列表\u id\u选中。追加(id\u到\u选中)
持续
返回列表\u子体\u ID

实际上,我是通过制作一个图形数据结构并使用dfs来解决它的。