Вам нужно изменить свои внутренние словари, например, конвертировать {1: 10, 2: 1}
в {1: {'weight': 10}, 2: {'weight': 1}}
.См. this , вот некоторый код:
import networkx as nx
my_dict_of_dicts = {0: {1: 10, 2: 1}, 1: {2: 1}, 2: {3: 1}, 3: {1: 1}}
for k, d in my_dict_of_dicts.items():
for ik in d:
d[ik] = {'weight': d[ik]}
g = nx.DiGraph(my_dict_of_dicts)
for s, t, w in g.edges(data=True):
print(s, t, w)
Выход
0 1 {'weight': 10}
0 2 {'weight': 1}
1 2 {'weight': 1}
2 3 {'weight': 1}
3 1 {'weight': 1}
Или в качестве альтернативы вы можете использовать выражение генератора:
import networkx as nx
my_dict_of_dicts = {0: {1: 10, 2: 1}, 1: {2: 1}, 2: {3: 1}, 3: {1: 1}}
g = nx.DiGraph((k, v, {'weight': weight}) for k, vs in my_dict_of_dicts.items() for v, weight in vs.items())
for s, t, w in g.edges(data=True):
print(s, t, w)
Вывод
0 1 {'weight': 10}
0 2 {'weight': 1}
1 2 {'weight': 1}
2 3 {'weight': 1}
3 1 {'weight': 1}
ОБНОВЛЕНИЕ
Как уже упоминалось @eduhs, вам нужно добавить несвязанные вершины,для этого вы можете добавить эту строку после создания графика:
g.add_nodes_from(my_dict_of_dicts.keys())