检查networkx中是否存在节点

时间:2018-03-05 05:21:06

标签: python networkx

我有一个图表,其中每个节点都有三个属性:'name','type','tag'。 我想创建一个函数来检查给定属性和值是否存在节点。例如:检查属性“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'

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

按属性

查找节点

节点是否存在属性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')

如果我们在节点的属性val中找到att,我们想迭代节点并返回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')

[out]:True

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

[out]:False

答案 1 :(得分:0)

字典需要输入密钥'标记',然后才能访问它。在不了解更多背景的情况下,我不能提出更多建议,尽管