import networkx as nx
def add_attributes(graph, node_attributes, edge_attributes):
"""
将节点和边缘属性添加到网络图。
参数:
graph (networkx.Graph): 要添加属性的图形对象。
node_attributes (dict): 一个字典,其中键是节点名称,值是一个包含要添加的属性名称和值的字典。
edge_attributes (dict): 一个字典,其中键是元组 (u, v)(表示边缘的起始节点和目标节点),值是要添加的属性名称和相应的值。
返回:
无
示例:
>>> G = nx.Graph([(1,2),(2,3),(3,4)])
>>> node_attrs = {1: {'color': 'blue'}, 2: {'color': 'red'}, 3: {'color': 'green'}}
>>> edge_attrs = {(1,2): {'weight': 2}, (2,3): {'weight': 3}, (3,4): {'weight': 4}}
>>> add_attributes(G, node_attrs, edge_attrs)
>>> G.nodes[1]['color']
'blue'
>>> G.edges[(1,2)]['weight']
2
"""
# 添加节点属性
for node in node_attributes:
for key, value in node_attributes[node].items():
graph.nodes[node][key] = value
# 添加边缘属性
for edge in edge_attributes:
for key, value in edge_attributes[edge].items():
graph.edges[edge][key] = value
使用示例:
G = nx.Graph([(1,2),(2,3),(3,4)])
node_attrs = {1: {'color': 'blue'}, 2: {'color': 'red'}, 3: {'color': 'green'}}
edge_attrs = {(1,2): {'weight': 2}, (2,3): {'weight': 3}, (3,4): {'weight': 4}}
add_attributes(G, node_attrs, edge_attrs)
print(G.nodes[1]['color']) # 输出 "blue"
print(G.edges[(1,2)]['weight']) # 输出 2