networkx 从 python 字典设置节点属性

twf*_*wfx 4 python networkx python-2.7

我正在尝试编写一个通用函数,它创建一个采用节点和边列表的图形。对于每个节点,都有一组默认属性和一组可选属性。由于可选属性可以是任何东西,我想使用字典来存储它们。但是,看起来add_node()似乎不接受变量作为关键字。鉴于以下代码片段,

import networkx as nx    

optional_attrs = {'ned':1, 'its':'abc'}

g = nx.Graph()
g.add_node('node1')
for k, v in optional_attrs.iteritems():
    g.add_node('node1', k=v)

print g.node(data=True)
Run Code Online (Sandbox Code Playgroud)

我明白了

NodeDataView({'node1':{'k':'abc'}})
Run Code Online (Sandbox Code Playgroud)

代替,

NodeDataView({'node1':{'ned':1, 'its':'abc'}})
Run Code Online (Sandbox Code Playgroud)

我想知道有可能实现这一目标吗?

小智 8

一般来说,在 python 中,如果你想使用 adict为函数提供关键字参数,你可以在 dict 前面加上**.

g.add_node('node1', **optional_attrs)
Run Code Online (Sandbox Code Playgroud)

添加节点后还可以添加/更改节点属性:

g.add_node('node1')
g.nodes['node1'].update(optional_attrs)  
Run Code Online (Sandbox Code Playgroud)