我试图在不使用get_edge_attributes()函数的情况下从图形中获取具有特定属性的边.我需要一种更灵活的方式.我可以得到节点属性,但因为我在python边缘是新的似乎很难
G = nx.read_graphml("test.graphml")
for n in G:
print "%s\t%s" %(n, G.node[n].get(attr))
for (s,d) in G: # and here is my problem
print "%s->%s\t%s" %(s, d, G.edge[s][d].get(attr))
Run Code Online (Sandbox Code Playgroud) 我在yEd中创建了一个图表,我想检查边是否有属性.例如,一些边缘有标签,但有些边缘.当我尝试这样做时,我得到一个错误:
for n, nbrs in G.adjacency_iter():
for nbr,eattr in nbrs.items():
evpn = eattr['vpn']
elabel = eattr['label'] #error is here
if evpn != "No":
nlabel = G[n].get("label")
platform = G[n].get("platform")
if G[nbr].get("platform") == platform:
g_vpn.add_nodes_from([n,nbr], label, platform) # I dont know if this way
#to set attributes is right
Run Code Online (Sandbox Code Playgroud)
虽然vpn属性起作用,因为我已经设置了默认值.我知道我可以在所有边缘添加标签值,但我希望我的程序检查标签是否缺失并设置默认值,就像我在下面所做的那样.虽然它不起作用,因为它在某些边缘找不到label属性:
for e,v in G.edges():
if G[e][v].get("label") == ""
label = "".join("vedge",i)
i+=1
G[e][v]['label']=label
Run Code Online (Sandbox Code Playgroud)
此外,如果您可以检查其余代码,并告诉我它是否需要任何改进或使一些事情更容易做.谢谢
我需要处理由 yEd 图创建的 graphml (XML) 文件,以便获取该图的节点和边属性。我需要使用 networkX 库来做到这一点。我是 Python 新手,从未使用过 networkX 库,因此我们将不胜感激。