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来解决它的。