在图中,通过边名称访问节点连接
In graph, access node connections by edge name
我有一个知识库图(内置于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')
在每对节点之间我有特定的关系,例如'works at','from',等等
我想检查我是否有特定节点所需的边缘。例如,我是否知道 user1 在 .
的工作地点的信息?
目前,我循环执行:
for connected_node, attributes in G['user1'].items():
if attributes['relation'] == 'works at':
print(True, connected_node)
是否可以在没有循环的情况下检查节点是否具有特定边?
然后通过这条边得到连接的节点?[=14=]
不,您必须遍历节点的边缘以查看它们是否与搜索条件匹配。我能想到的唯一 minor 改进是仅在具有 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
我有一个知识库图(内置于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')
在每对节点之间我有特定的关系,例如'works at','from',等等
我想检查我是否有特定节点所需的边缘。例如,我是否知道 user1 在 .
的工作地点的信息?目前,我循环执行:
for connected_node, attributes in G['user1'].items():
if attributes['relation'] == 'works at':
print(True, connected_node)
是否可以在没有循环的情况下检查节点是否具有特定边?
然后通过这条边得到连接的节点?[=14=]
不,您必须遍历节点的边缘以查看它们是否与搜索条件匹配。我能想到的唯一 minor 改进是仅在具有 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