首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查边在Networkx中是否有属性

如何检查边在Networkx中是否有属性
EN

Stack Overflow用户
提问于 2013-06-23 05:12:32
回答 1查看 6.3K关注 0票数 7

我在yEd中创建了一个图,我想检查边是否有属性。例如,有些边有标签,但有些没有。当我尝试这样做时,我得到一个错误:

代码语言:javascript
复制
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属性起作用是因为我设置了一个默认值。我知道我可以在所有的边上放置一个标签值,但我希望我的程序检查标签是否丢失,并像我下面所做的那样设置一个默认值。尽管它不能工作,因为它在某些边找不到label属性:

代码语言:javascript
复制
for e,v in G.edges():
  if G[e][v].get("label") == ""
  label = "".join("vedge",i)
  i+=1
  G[e][v]['label']=label

此外,如果您可以检查该代码的其余部分,并告诉我,如果它需要任何改进或使一些事情更容易做。谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-06-23 21:38:31

边属性存储为字典,因此您可以测试该键是否在字典中:

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17255354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档