我在读取 GML 图后获取节点时遇到问题。(很抱歉,我无法为您提供准确的可重现代码,因为我的代码有 500 行长,而且较小的可重现示例给出了奇怪的正确结果)。所以我会尽量描述它:
我创建了一个中等大小的图 G(40k 节点,100 万条边)。我可以通过简单地执行它的字符串标签来访问它的节点G['something']
。我已经将它写入 GML 文件,然后读取它。现在:我不能像以前那样通过标签访问节点(我得到了KeyError
),但我可以通过 id 访问它们(在编写 GML 文件期间创建,对吗?),即G[1]
给我一个 AtlasView:
AtlasView({0: {'weight': 1}, 3253: {'weight': 8}, 9694: {'weight': 1}....
但是 0、3253、9694 也是 id,而不是标签。你知道出了什么问题吗?
这是我的读写代码:
G = nx.Graph()
for mp in mps:
G.add_node(mp.name, bipartite=0)
for word in mp.speeches:
G.add_node(word, bipartite=1)
if not G.has_edge(mp.name, word):
G.add_edge(mp.name, word, weight = 1)
else:
G[mp.name][word]['weight'] += 1
#Here I can simply acces the node by G[mp.name]
# and the output is i.e. {'wznawiać': {'weight': 2}, 'obrady':....
nx.write_gml(G, "test.gml")
G = nx.read_gml('test.gml')
#Here I can't acces the node by G[mp.name], but only by it's id
此外,当我试图在一个较小的示例上重现问题时,我得到了正确的结果。也许它与编码有关?