我正在开发一个使用networkx中的有向图创建族谱的函数,其中节点是具有出生日期作为节点属性的族成员。 现在,我要执行的另一个功能是给定图G和一个节点的名称,并返回该节点所有“孙子”的排序列表。所以基本上,我这样做:
return sort(G.successors(G.successors(node)))
但是,由于G.successors
返回了后继列表,所以这不起作用。
您将如何处理?
谢谢!
答案 0 :(得分:0)
您可以为此任务编写自己的函数。如果确定DiGraph
是树,则可以将set()
替换为list
。还请在下一个问题中添加带有所需输出的minimal reproducible example。
import networkx as nx
family_tree = nx.DiGraph()
family_tree.add_edges_from([("GP", "P1"), ("GP", "P2"), ("P1", "S1"), ("S1", "GS1"), ("P1", "S2")])
def successors_of_successors(graph, node):
results = set()
for successor in graph.successors(node):
results.update(graph.successors(successor))
return results
print(successors_of_successors(family_tree, "GP"))
# {'S2', 'S1'}
print(successors_of_successors(family_tree, "P1"))
# {'GS1'}