1

我正在研究一个使用networkx中的有向图创建家谱的函数,其中节点是家庭成员,出生日期作为节点属性。现在我想做的是创建另一个函数,给定图形 G 和节点的名称,返回该节点的所有“孙子”的排序列表。所以基本上,我这样做:

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

但由于G.successors返回一个后继者列表,这不起作用。

你会如何处理这个问题?

谢谢!

4

1 回答 1

0

您可以为此任务编写自己的函数。如果你确定你的DiGraph是一棵树,你可以set()list. 还请在您的下一个问题中添加一个具有所需输出的最小可重复示例。

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'}
于 2020-04-23T09:14:13.363 回答