Я собираюсь предположить, что «все соседи с определенным значением веса» относятся к весам узлов. Я сделаю пример, найдя соседей весом больше определенного значения.
import networkx as nx
import random
G = nx.Graph()
#now create nodes with random weights. If this notation is
#unfamiliar, read up on list comprehensions. They make life much easier.
nodes = [(node, {'weight':random.random()}) for node in range(10)]
G.add_nodes_from(nodes)
#now G has the nodes and they each have a random weight.
G.nodes(data=True)
> [(0, {'weight': 0.42719462610483916}),
(1, {'weight': 0.13985473528922154}),
(2, {'weight': 0.06889096983404697}),
(3, {'weight': 0.10772762947744585}),
(4, {'weight': 0.24497933676194383}),
(5, {'weight': 0.18527691296273396}),
(6, {'weight': 0.16379510964497113}),
(7, {'weight': 0.5481883941716088}),
(8, {'weight': 0.3782931298078134}),
(9, {'weight': 0.5902126428368549})]
#now create edges from 0 to all other nodes
zero_edges = [(0,u) for u in range(1,10)]
G.add_edges_from(zero_edges)
#now find all neighbors of 0 with weight > 0.5
heavy_neighbors = [nbr for nbr in G.neighbors(0) if G.node[nbr]['weight']>0.5]
heavy_neighbors
>[7,9]
Если вы хотите, вы также можете сделать heavy_neighbors
генератором, заменив внешние [
и ]
на (
и )
.