ThePirate42 Asked: 2025-02-18 17:32:46 +0800 CST2025-02-18 17:32:46 +0800 CST 2025-02-18 17:32:46 +0800 CST 以一致的方式将 Networkx 图表示为字符串 772 我有多个 Networkx 图(具有节点属性),我需要将它们表示为字符串。有几种方法可以做到这一点,但我需要始终为相等的图获取相同的字符串(不是同构的,相等的意思是graphs_equal返回 true)。有没有办法将图转换为字符串并保证这一点? python 1 个回答 Voted Best Answer Alex Duchnowski 2025-02-18T21:46:45+08:002025-02-18T21:46:45+08:00 我认为下面做的事情应该有效。 import networkx as nx def graph_to_str(g): return str(sorted(list(g.nodes.data()))), str( sorted( (e[0], e[1], e[2]) if e[0] < e[1] else (e[1], e[0], e[2]) for e in list(g.edges.data()) ) ) g1 = nx.complete_graph(4) g2 = nx.Graph([(1, 2), (2, 3), (0, 1), (1, 3), (0, 2), (0, 3)]) nx.set_node_attributes(g1, {1: {"hello": "world"}}) nx.set_edge_attributes(g1, {(2, 3): {"foo": "bar"}}) nx.set_node_attributes(g2, {1: {"hello": "world"}}) nx.set_edge_attributes(g2, {(2, 3): {"foo": "bar"}}) print(nx.utils.graphs_equal(g1, g2), graph_to_str(g1) == graph_to_str(g2)) # True True 本文档中可能还解释了有关读取/写入 Networkx 图的其他一些方法。
我认为下面做的事情应该有效。
本文档中可能还解释了有关读取/写入 Networkx 图的其他一些方法。