繁体   English   中英

检查networkx中是否存在节点

[英]Check whether a node exists in networkx

我有一个图,其中每个节点具有三个属性:“名称”,“类型”,“标签”。 我想创建一个函数来检查给定属性和值是否存在节点。 例如:检查属性'tag'='1'的节点是否存在。 我写了以下代码:

def find_node(gr, att, val):
    nodesAt5 = filter(lambda (n, d): d[att] == val, gr.nodes(data=True))
    return nodesAt5

我将该函数称为:

if not find_node(G, 'tag', w):
    # do something

它给出了这个错误:

KeyError: 'tag'

有什么建议么?

按属性查找节点

是否存在具有属性att和值val的节点?

让我们创建一个测试集:

import networkx as nx
G = nx.Graph()
G.add_node(0, name='zero', type='node', tag='group_0')
G.add_node(1, name='one', type='node', tag='group_1')
G.add_node(2, name='two', type='node', tag='group_2')

我们想遍历节点,如果在节点的属性att处找到val ,则返回true:

def find_node(gr, att, val):
    return any([node for node in G.nodes(data=True) if node[1][att] == val])

测试功能:

find_node(G, 'tag', 'group_0')

[输出]: True

find_node(G, 'tag', 'w')

[输出]: False

字典需要有键“ tag”在其中的条目,然后您才能访问它。 但是,在不了解更多上下文的情况下,我无法提供更多建议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM