networkx从python字典中设置节点属性

时间:2017-09-10 15:16:11

标签: python python-2.7 networkx

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

foreach ($percent as $key => $value) {
   echo $key . " - Percent match is: " . $value . " </br>";
}

我得到了

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)

而不是,

NodeDataView({'node1':{'k':'abc'}})

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

2 个答案:

答案 0 :(得分:0)

通常在python中如果你想使用dict为函数提供关键字参数,你可以在**前面添加dict。

g.add_node('node1', **optional_attrs)

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

g.add_node('node1')
g.nodes['node1'].update(optional_attrs)  

答案 1 :(得分:0)

您还可以使用set_node_attributes函数,该函数带有图形和字典。 dic的键集是图节点的子集,其值是其相应键的数据。

import networkx as nx    
optional_attrs = {'node1':{'ned':1, 'its':'abc'}}
g = nx.Graph()
g.add_node('node1')
nx.set_node_attributes(g, optional_attrs)
print(g.nodes.data())

这将输出:

[('node1', {'its': 'abc', 'ned': 1})]