Networkx中的DiGraph中后继者的后继者列表

时间:2020-04-22 19:52:26

标签: python networkx digraphs jsnetworkx

我正在开发一个使用networkx中的有向图创建族谱的函数,其中节点是具有出生日期作为节点属性的族成员。 现在,我要执行的另一个功能是给定图G和一个节点的名称,并返回该节点所有“孙子”的排序列表。所以基本上,我这样做:

return sort(G.successors(G.successors(node)))

但是,由于G.successors返回了后继列表,所以这不起作用。

您将如何处理?

谢谢!

1 个答案:

答案 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'}