[英]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.