7

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

デフォルト値を設定しているため、vpn属性は機能しますが。すべてのエッジにラベル値を配置するだけでよいことはわかっていますが、プログラムでラベルが欠落しているかどうかを確認し、以下のようにデフォルト値を設定したいと考えています。一部のエッジでラベル属性が見つからないため、機能しませんが:

for e,v in G.edges():
  if G[e][v].get("label") == ""
  label = "".join("vedge",i)
  i+=1
  G[e][v]['label']=label

また、そのコードの残りの部分を確認して、改善が必要かどうか、またはいくつかの作業を簡単にする必要があるかどうかを教えてください。ありがとう

4

1 に答える 1

10

エッジ属性はディクショナリとして保存されるため、キーがディクショナリにあるかどうかをテストできます。

In [1]: import networkx as nx

In [2]: G = nx.Graph()

In [3]: G.add_edge(1,2,color='blue')

In [4]: G.add_edge(2,3)

In [5]: 'color' in G[1][2]
Out[5]: True

In [6]: 'color' in G[2][3]
Out[6]: False
于 2013-06-23T13:38:31.193 に答える