首页 > 解决方案 > 将复杂类实例序列化为 NetworkX 中的节点

问题描述

业余爱好者,请耐心等待!

前言:

我有一个 networkX 图,其中所有节点都是一个类或其某个子类的实例。IE:

class Qnode:
    def __init__(self, **atts)
    ...
    Etc.

G = nx.graph()
G.add_node(Qnode(**atts))

我有兴趣序列化我的图表,以便将其发送给其他人。目前我认为最好的方法是使用 adjacency_data()

一个简单的例子:

from networkx.readwrite import json_graph
simple = nx.Graph([(1, 2)])
data = json_graph.adjacency_data(simple)
print(data)

>>> {'directed': False, 'multigraph': False, 'graph': [], 'nodes': [{'id': 1}, {'id': 2}], 'adjacency': [[{'id': 2}], [{'id': 1}]]}

然后可以将其转储到 JSON 对象中。

当我为我的 qnode 对象图执行此操作时,它似乎正确序列化,但将我的值写为指向我的 Qnodes 的指针,这对接收方没有用。

我的 qNode 对象作为 networkx 节点的单节点图示例:

{'directed': False, 'multigraph': False, 'graph': [], 'nodes': [{'id': <Node.Qnode object at 0x7fadeedbcda0>}

主要问题::

什么是我解压缩对象的最简单方法,以便我可以在不引用指针的情况下发送所有内容?提前致谢!

标签: jsonserializationnetworkx

解决方案


推荐阅读