我有一个网络要输出到json文件。但是,当我输出它时,节点目标将转换为数字,并且不匹配字符串的节点ID。目标与networkx json文件中的节点ID不匹配
例如:
G = nx.DiGraph(data)
G.edges()
结果:
[(22, 'str1'),
(22, 'str2'),
(22, 'str3')]
在python。这是对的。
但在输出端,当我写出像这样的数据...
json.dump(json_graph.node_link_data(G), f,
indent = 4, sort_keys = True, separators=(',',':'))
而IDS三个目标节点的STR1',“str2的”和“STR3” ...
{
"id":"str1"
},
{
"id":"str2"
},
{
"id":"str3"
}
节点22的目标已经变成了数字
{
"source":22,
"target":972
},
{
"source":22,
"target":1261
},
{
"source":22,
"target":1259
}
出现这种情况有字符串ID的所有节点s
这是怎么回事,我该如何预防呢?
期望的结果是,“目标”字段应该保留字符串ID,或者字符串ID以匹配目标的方式变成数字。
啊有趣的是,它似乎是如果字符串被替换为链接目标和来源的数字,那么应该是ID值 - 否则库如何从输出json数据知道节点连接到什么?我想我对networkx和图形是新手,所以涉及的所有问题都不清楚。 尽管如此,感谢您的答案,以及如何访问和修改这些数据:) – CHP
“id值”是什么意思?整数节点名称?它们也被替换。例如,在'links'数组中,''source':0'指向节点0,它被命名为1. –
我的意思是说,当我使用json_graph.node_link_data写出数据时,它将使得像'节点'和'链接'。在“节点”下,替换不会发生,仅在“链接”下。但是我想你会说所有独特的“源”值都等价于需要连接的节点列表,所以如果读取数据的软件忽略了“节点”键而只是使用“源'数据。 – CHP