我正在尝试编写一个通用函数,它创建一个带有节点和边列表的图形。对于每个节点,都有一组默认属性和一组可选属性。因为可选属性可以是任何东西,我想使用字典来存储它们。但是,看起来 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'}})
我想知道有可能实现这个目标吗?
答案 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})]