我对NetworkX documentation的阅读表明这应该有用,但似乎并不适用?
考虑:
import networkx as nx
g = nx.MultiDiGraph()
g.add_nodes_from([0, 1])
g.add_edge(0,1)
g.add_edge(0,1)
g.edges() # returns [(0, 1), (0, 1)]
d = nx.to_dict_of_dicts(g) # returns {0: {1: {0: {}, 1: {}}}, 1: {}}
g2 = nx.from_dict_of_dicts(d, multigraph_input=True)
# or, equivalently?, g2 = MultiDiGraph(d)
g2.edges() # only returns [(0,1)]
我在这里犯了一个小错误,或者这是一个错误?
对于我的应用程序,我发现了一个更好的选择,即使用networkx.readwrite.json_graph
进行序列化,但我想我会留下这个问题,以防它对其他人有用。
答案 0 :(得分:1)
问题是nx.from_dict_of_dicts()
的默认图表输出似乎是一个简单的图表。
>>> g2
<networkx.classes.graph.Graph at 0x10877add0>
尝试创建一个与您想要的输出相同类型的新空图 - 所以在您的情况下是MultiDiGraph。然后使用create_using
的{{1}}参数确保您的新图表属于该类型:
nx.from_dict_of_dicts()
成功!