0

我有一个知识库图(内置networkx)。

这里是编造的例子。

G = nx.DiGraph()
G.add_edge('user1', 'New York', relation = 'works at')
G.add_edge('user1', 'Boston', relation = 'from')
G.add_edge('user1', '27', relation = 'Age') 

图关系

在每对节点之间,我有特定的关系,例如“工作于”、“来自”等

我想检查我是否有特定节点所需的边缘。例如,我是否知道有关user1 在哪里工作的信息。

目前,我循环执行:

for connected_node, attributes in G['user1'].items():
    if attributes['relation'] == 'works at':
        print(True, connected_node)

是否可以检查节点是否具有没有循环的特定边缘?

因此通过这条边获得连接节点?

4

1 回答 1

1

不,您必须遍历节点的边缘以查看它们中的任何一个是否与搜索条件匹配。我能想到的唯一改进是仅在节点的外边缘中搜索DiGraph.out_edges

for source, dest, d in G.out_edges('user1', data=True):
    if d.get('relation') == 'works at':
        print(f'Connected node {source} -> {dest}')
# Connected node user1 -> New York
于 2020-04-21T11:31:52.927 回答