我寻找更优雅的方法来从以下属性之一搜索有向图中的节点:
g = nx.DiGraph()
g.add_nodes_from([(1, dict(d=0, a=7)), (2, dict(d=0, a=6))])
g.add_nodes_from([(11, dict(d=1, a=4)), (12, dict(d=1, a=9))])
g.add_nodes_from([(21, dict(d=1, a=4)), (121, dict(d=2, a=7))])
g.add_edges_from([(1, 11), (1, 12), (2, 21), (12, 121)])
g.nodes.data()
# NodeDataView({1: {'d': 0, 'a': 7}, 2: {'d': 0, 'a': 6},
# 11: {'d': 1, 'a': 4}, 12: {'d': 1, 'a': 9},
# 21: {'d': 1, 'a': 4}, 121: {'d': 2, 'a': 7}})
现在我使用g.nodes.data()
获取node_id、attrs元组:
def search(g, d, a):
for nid, attrs in g.nodes.data():
if attrs.get('d') == d and attrs.get('a') == a:
return nid
search(g, d=1, a=9)
# 12