gpt4 book ai didi

attributes - 如何检查边缘是否在 Networkx 中具有属性

转载 作者:行者123 更新时间:2023-12-04 14:14:21 25 4
gpt4 key购买 nike

我在 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

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

最佳答案

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

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

关于attributes - 如何检查边缘是否在 Networkx 中具有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com