python - 使用 Python 在 NetworkX 中示例边缘属性
问题描述
我想从我用 networkX 构建的有向图中采样三个边缘属性。图表中具有“依赖”属性的边如下所示:
import networkx as nx
import random
from random import choice
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)
现在我想从上面采样三个不同的边缘属性,并将它们与 0 到 1 之间的随机数相乘。它应该看起来像这样:
for i in range(3):
sampled_edge = random.sample(G.edges, 1)
sampled_edge_with_random_number = sampled_edge['dependency'] * random.uniform(0,1)
print(sampled_edge_with_random_number)
但我不断收到以下错误消息:
TypeError: list indices must be integers or slices, not str
做这个的最好方式是什么?
解决方案
你的剧本有两个错误。
- 是什么
random.sample(G.edges, 1)
?绝对是包含一个项目的列表,因此它不能成为任何优势的关键。正确的键是sampled_edge[0]
- 是什么
sampled_edge
?如果是列表或元组,则不能有任何键。唯一应该有一个键的是你的图表的 EdgeView。那时应该是G.edges
。
识别出某些边缘后,您也可以访问其属性。所以只需在你的脚本中替换你的,就是这样sampled_edge['dependency']
。G.edges[sampled_edge[0]]['dependency']
推荐阅读
- c# - 如何在 c# 中基于构造函数方法创建数组?
- oracle - 在从类型对象插入之前,plsql 在表中创建一个 upsert/merge 逻辑
- java - 游戏返回执行的命令
- reactjs - API 调用后无法让 Circles 在 react-leaflet 地图上呈现
- javascript - 在javascript中向数组添加键名
- python - 如何在 Apache Beam(Python SDK)中对早期触发进行单元测试
- mule - mule 4中如何动态配置HTTP Request Connector的OAuth2授权参数
- c++ - 如何防止在 C++ 中访问 dll 中的函数
- sql - 是否可以在win10上安装DB2以供C程序访问,使用Cygwin?
- vue.js - Vue路由器重定向命名组件不缺少参数?