如何在Python NetworkX中读取、更新和写入图属性?
在Python NetworkX中操作图属性:读取、更新与写入
创建图时设置属性
你已经知道可以在初始化Graph对象时直接指定属性:
import networkx as nx graph = nx.Graph(name="Simulation_General_Voter_Model")
还可以一次性添加多个自定义属性:
graph = nx.Graph( name="Simulation_General_Voter_Model", version="1.0", simulation_type="voter_model" )
读取图属性
NetworkX的图属性存储在图对象的graph字典中,有两种常用读取方式:
- 针对
name这类内置特殊属性,可直接通过图对象访问:print(graph.name) # 输出: Simulation_General_Voter_Model - 通用自定义属性,用字典键值对方式读取:
print(graph.graph["version"]) # 输出: 1.0 print(graph.graph.get("simulation_type")) # 输出: voter_model
更新图属性
更新属性同样支持两种方式:
- 直接修改内置属性:
graph.name = "Updated_General_Voter_Model" - 修改或添加自定义属性:
# 单个属性更新 graph.graph["version"] = "2.0" # 批量更新多个属性 graph.graph.update({ "simulation_type": "general_voter_model", "last_modified": "2024-05-20" })
写入与读取带属性的图
要保留图属性保存到文件,需选择支持元数据的格式(如GraphML、GML),以GraphML为例:
写入图到文件
nx.write_graphml(graph, "voter_model_graph.graphml")
从文件读取带属性的图
loaded_graph = nx.read_graphml("voter_model_graph.graphml") # 验证属性是否保留 print(loaded_graph.name) # 输出: Updated_General_Voter_Model print(loaded_graph.graph["version"]) # 输出: 2.0
注意:部分轻量格式(如Edge List)不支持存储图属性,优先选择GraphML或GML格式以确保属性被完整保留。
内容的提问来源于stack exchange,提问作者Torben Ammelt
相关产品推荐
相关产品推荐

