python - 使用 networkx 更新图的边属性
问题描述
我有以下带有边缘属性的图表:
import networkx as nx
import random
G=nx.DiGraph()
G.add_edge('x','a', dependency=0.4)
G.add_edge('x','b', dependency=0.6)
G.add_edge('a','c', dependency=1)
G.add_edge('b','c', dependency=0.3)
G.add_edge('b','d', dependency=0.7)
G.add_edge('d','e', dependency=1)
G.add_edge('c','y', dependency=1)
G.add_edge('e','y', dependency=1)
设置好图的结构后,我将对三个不同的边属性进行采样,并将它们与随机数相乘,如下所示:
for i in range(3):
sampled_edge = random.sample(G.edges, 1)
print(sampled_edge)
sampled_edge_with_random_number = G.edges[sampled_edge[0]]['dependency'] * random.uniform(0,1)
print(sampled_edge_with_random_number)
现在我想用新的采样图属性更新初始图属性,所以它看起来像这样。该算法应该在结构中寻找相同的边缘属性并更新依赖值:
for i in G.edges:
if i == sampled_edge:
i['dependency'] = sampled_edge_with_random_number
有人可以帮我弄这个吗?
解决方案
您可以访问属性来更新和更改它
>>> G=nx.DiGraph()
>>> G.add_edge('x','a', dependency=0.4)
>>> G['x']['a']
{'dependency': 0.4}
>>> G['x']['a']['dependency'] = 10
>>> G['x']['a']
{'dependency': 10}
另一种方法是nx.set_edge_attributes
>>> sampled_edge = ('x', 'a')
>>> new_val = 42
>>> nx.set_edge_attributes(G, {sampled_edge:{'dependency':new_val}})
>>> G['x']['a']['dependency']
42
('x','a')
你在哪里sampled_edge
。
推荐阅读
- r - 如何根据字符串而不是值更改闪亮仪表板中信息框的颜色?
- spartacus-storefront - 如何根据 Spartacus 中的用户配置文件自动更改站点之间的货币
- c++ - 如何在c ++中使用kill函数杀死进程?
- typescript - 在 TypeScript 中按类型排除函数参数
- java - Android Studio 从 FireBase 存储异步下载文件
- javascript - 在javascript上使用javascript模拟点击事件:href
- firebase - nuxt.js 中出现意外的模板字符串表达式(no-template-curly-in-string)
- azure - 正确部署 AAD Pod 身份
- r - 在一个选项卡中创建 rmd 输出后,闪亮的仪表板主体显示为在所有选项卡中包含 rmd 输出
- mysql - 当我从 fetch 发布时,我的数据库将所有值记录为 0。Node.js mySql