我正在尝试使用 networkx 创建有向图。我想使用add_edges_from()
,并且我希望从三个元组生成边缘及其数据。
我正在从 CSV 文件导入数据。我有三列:一列用于 ids(第一组节点),一列用于一组名称(第二组节点),另一列用于容量(文件中没有标题)。因此,我为 id 和容量创建了一个字典。
dictionary = dict(zip(id, capacity))
然后我压缩了包含边缘数据的元组:
List = zip(id, name, capacity)
但是当我执行下一行时,它给了我一个断言错误。
G.add_edges_from(List, 'weight': 1)
有人可以帮我解决这个问题吗?我已经尝试了一周没有运气。
PS我是编程新手。
编辑:
所以,我找到了以下解决方案。老实说,我不确定它是如何工作的,但它确实完成了工作!这是代码:
import networkx as nx
import csv
G = nx.DiGraph()
capacity_dict = dict(zip(zip(id, name),capacity))
List = zip(id, name, capacity)
G.add_edges_from(capacity_dict, weight=1)
for u,v,d in List:
G[u][v]['capacity']=d
现在当我运行时:
G.edges(data=True)
结果将是:
[(2.0, 'First', {'capacity': 1.0, 'weight': 1}), (3.0, 'Second', {'capacity': 2.0, 'weight': 1})]
我正在使用网络单工。现在,我正在尝试找到一种方法来使 flowDict 的输出更易于理解,因为它只显示流的 id。(也许我会尝试将它们输入数据库并返回整行数据,而不是仅使用 ID)。