>>> import networkx as nx
>>> g = nx.Graph()
>>> g.add_nodes_from([1, 2, 3, 4, 5], carved=False)
>>> g[1]
{}
>>> nx.get_node_attributes(g, "carved")
{1: False, 2: False, 3: False, 4: False, 5: False}
>>>
当我键入'g[1]'时,我不应该得到“雕刻”属性吗? 以下工作:
^{pr2}$我在这里遗漏了什么,为什么没有像第二个例子那样应用“carve”属性?我在Windows上运行python2.7。我更新了networkx的安装,以为我有一个旧版本?在
如有任何帮助,将不胜感激。在
看起来您打算使用}。在
g.node[1]
而不是{TL/DR:使用
g.node[u]
获取节点u
的属性。g[u]
完全是另外一回事。在底层的数据结构是}的键,那么{}是一个字典,其键是节点{}的邻居。在
g
基本上是一个字典。节点是g
的键,如果1
是{因此,在将节点放入}现在有一条介于}之间的边,并且该边具有属性}。但是由于您直接编辑了数据结构,}已经被创建为一个节点。这显然不是你想要的。在
g
之后,您没有放入任何边。g[1]
是空的这一事实反映了1
没有邻居。一旦您通过设置g[1]["carved"] = True
直接编辑底层数据结构,您将发现现在g.neighbors(1)
是['carved']
,而{1
和{True
(来自{g.nodes()
没有意识到{相反,使用}的任何边属性。在
g.node[u]
获取节点u
的属性,使用g.edge[u][v]
获取从u
到{相关问题 更多 >
编程相关推荐