如何将NetworkX网络边属性元组列表转换为元组为键的边标签字典
转换实现方案
你可以通过Python的字典推导式快速完成格式转换,代码非常简洁:
# 方式1:先提取边列表再转换 edge_list = list(sub_gr.edges(data=True)) edge_labels = {(u, v): attrs for u, v, attrs in edge_list}
你也可以省略转列表的步骤,直接对边迭代器构造字典,代码更精简:
# 方式2:一步完成转换 edge_labels = {(u, v): attrs for u, v, attrs in sub_gr.edges(data=True)}
注意事项
- 该转换结果完全适配
nx.draw_networkx_edge_labels的参数要求,无需额外调整边的节点顺序,可直接传入使用 - 若你使用的是多重图(MultiGraph/MultiDiGraph),则需要额外捕获边的key作为键的一部分,普通图无需额外处理
完整使用示例
import networkx as nx # 假设你已完成sub_gr的构造和节点位置pos的计算 pos = nx.spring_layout(sub_gr) # 构造符合要求的边标签字典 edge_labels = {(u, v): attrs for u, v, attrs in sub_gr.edges(data=True)} # 绘制网络和边标签 nx.draw(sub_gr, pos, with_labels=True) nx.draw_networkx_edge_labels(sub_gr, pos, edge_labels=edge_labels, font_color='red')
内容的提问来源于stack exchange,提问作者Ailurophile
相关产品推荐
相关产品推荐

