networkx - networkx:从多重图中删除具有特定属性的边
问题描述
我想从 MultiGraph 中删除特定的边(特定颜色)。
我怎样才能做到这一点?
以下代码不起作用。
#!/usr/bin/env python
import matplotlib.pyplot as plt
import networkx as nx
G = nx.MultiGraph()
# the_colored_graph.add_edge(v1, v2, "red")
G.add_edge(1, 2, color="red")
G.add_edge(2, 3, color="red")
G.add_edge(4, 2, color="green")
G.add_edge(2, 4, color="blue")
print (G.edges(data=True))
# G.remove_edge(2, 4, color="green")
#
selected_edge = [(u,v) for u,v,e in G.edges(data=True) if e['color'] == 'green']
print (selected_edge)
G.remove_edge(selected_edge[0][0], selected_edge[0][1])
print (G.edges(data=True))
nx.draw(G)
plt.show()
解决方案
在构建多重图时,为每条边分配一个“关键”属性(关键可以是消除平行边歧义的任何东西 - 例如颜色):
G.add_edge(1, 2, color="red", key='red')
通过指定结束节点和键来删除边:
G.remove_edge(1, 2, key='red')
推荐阅读
- azure-devops - Azure DevOps 中的质量门小部件问题
- java - 分享图片到 Snapchat
- mysql - Mysql SQL查询排除特定记录
- active-directory - 小型办公室的广告
- python - 当我从 Flask 下载 CSV 时,数据未写入 CSV
- xml - 通过使用带有 libxml 版本 20706 的 xmlstarlet 或 xmllint 获取值
- r - 如何从某个列获取矩阵列输出
- swift - SwiftUI - 如何使用列表单元格内的异步操作更改同步值
- python-3.x - 正则表达式以一系列字符串捕获 IP 地址 + /subnet 格式并将每个匹配项分配给一个组
- google-app-engine - GAE 部署错误:“无法写入多个包”