我已经提取了一些我曾经在 networkx 1.6.1 中使用过的代码。gml
在 1.8.1 上,它在写入or时不起作用graphml
。
问题归结为无法在数据字典中写入边缘属性,如下所示:
BasicGraph = nx.read_graphml("KeggCompleteEng.graphml")
for e,v in BasicGraph.edges_iter():
BasicGraph[e][v]['test'] = 'test'
nx.write_graphml(BasicGraph, "edgeTester.graphml")
导致错误:
AttributeError: 'str' object has no attribute 'items'
当我使用时:for e,v,data in BasicGraph.edges_iter(data=True):
数据打印如下:
{'root_index': -3233, 'label': u'unspecified'}
test
AKA 新属性在字典之外。
文档说我应该能够像上面那样做。但是,我想我犯了一个愚蠢的错误,很高兴能回到正确的道路上!
编辑:
所以我用程序内部生成的图表运行程序: BasicGraph = nx.complete_graph(100)
它运行良好。
然后,我使用来自底漆的示例 graphml 文件运行它:BasicGraph = nx.read_graphml("graphmltest.graphml")
这也很有效。(我什至导入和导出 Cytoscape 以检查这不是问题)
所以很明显这是我正在使用的文件。这是它的链接,任何人都可以看到它有什么问题吗?