Я работаю с графиком, в котором ребра могут быть двух типов.Нет ограничений на то, как эти два типа связаны.
В работе, которую я делаю, я беру из этого подграф и хочу удалить только те ребра, которые относятся к одному из двух типов.
Я добавил тип в качестве ребраатрибут и попытался отфильтровать эти ребра, используя понимание списка и удалить, как указано ниже:
In [1]: import networkx as nx
In [2]: G = nx.path_graph(3)
In [3]: nx.set_edge_attributes(G,'B', '_type')
In [4]: G.add_edge(2, 3, _type="A")
In [5]: SG = G.subgraph([1,2,3])
In [6]: to_remove = [(a,b) for a,b,c in SG.edges(data=True) if c['_type']=="A"]
In [6]: to_remove
Out[6]: [(2, 3)]
In [7]: SG.remove_edges_from(to_remove)
In [8]: SG.edges(data=True)
Out[8]: EdgeDataView([(1, 2, {'_type': 'B'})])
Есть ли лучший способ реализовать это либо
- без добавления типов какатрибут или
- более эффективный способ реализации, чем выше