簡體   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