Python 如何从字典中生成加权图?

Python 如何从字典中生成加权图?,python,graph,networkx,Python,Graph,Networkx,我想从字典里画一个加权图。我认为我获取数据的方式使它变得困难。 我的数据如下: graph = {} graph["A"] = {} graph["A"] ["B"] = 1 graph["A"] ["C"] = 3 graph["A"] ["D"] = 2 graph["B"] = {} graph["B"

我想从字典里画一个加权图。我认为我获取数据的方式使它变得困难。 我的数据如下:

graph = {}

graph["A"] = {}
graph["A"] ["B"] = 1 
graph["A"] ["C"] = 3 
graph["A"] ["D"] = 2 

graph["B"] = {} 
graph["B"] ["D"] = 7
graph["B"] ["F"] = 5

graph["C"] = {}
graph["C"] ["E"] = 5

graph["D"] = {}
graph["D"] ["B"] = 7
graph["D"] ["E"] = 1

graph["E"] = {}
graph["E"] ["F"] = 4

graph["F"] = {}
父节点是一个字典,它存储具有边权重的邻居

我可以使用networkx制作未加权的图形:

for k, v in graph.items():
    G.add_edges_from(([(k,t) for t in v]))
但是我想不出一种方法来增加边缘的重量。

不幸的是,我无法编辑我获取数据的方式,而这是我唯一能想到的让它发挥作用的选项。请帮助

假设G是您的图形:

graph = {}

graph["A"] = {}
graph["A"] ["B"] = 1 
graph["A"] ["C"] = 3 
graph["A"] ["D"] = 2 

graph["B"] = {} 
graph["B"] ["D"] = 7
graph["B"] ["F"] = 5

graph["C"] = {}
graph["C"] ["E"] = 5

graph["D"] = {}
graph["D"] ["B"] = 7
graph["D"] ["E"] = 1

graph["E"] = {}
graph["E"] ["F"] = 4

graph["F"] = {}

for k,v in graph.items():
    for l, w in v.items():
        print(k, l, w)
        G.add_edge(k,l, weight=w)

假设G是您的图形:

graph = {}

graph["A"] = {}
graph["A"] ["B"] = 1 
graph["A"] ["C"] = 3 
graph["A"] ["D"] = 2 

graph["B"] = {} 
graph["B"] ["D"] = 7
graph["B"] ["F"] = 5

graph["C"] = {}
graph["C"] ["E"] = 5

graph["D"] = {}
graph["D"] ["B"] = 7
graph["D"] ["E"] = 1

graph["E"] = {}
graph["E"] ["F"] = 4

graph["F"] = {}

for k,v in graph.items():
    for l, w in v.items():
        print(k, l, w)
        G.add_edge(k,l, weight=w)

使用示例
图形
。将
图形
中的键与其值中的每个项组合起来。用于添加边

import networkx as nx
G = nx.Graph()

for k, v in graph.items():
    edges = [(k,b,w) for b,w in v.items()]
    print(edges)
    #G.add_weighted_edges_from(edges)
    G.add_weighted_edges_from((k,b,w) for b,w in v.items())


使用示例
图形
。将
图形
中的键与其值中的每个项组合起来。用于添加边

import networkx as nx
G = nx.Graph()

for k, v in graph.items():
    edges = [(k,b,w) for b,w in v.items()]
    print(edges)
    #G.add_weighted_edges_from(edges)
    G.add_weighted_edges_from((k,b,w) for b,w in v.items())


我想不出向边缘添加权重的方法。
您不知道如何为networkx边缘添加权重?或者您不知道如何从图表中获取权重?
我想不出一种方法将权重添加到边缘。
-您不知道如何为networkx边缘加权?或者您不知道如何从图表中获取权重?