在NetworkX中向具有相同名称,不同属性的节点添加边

时间:2020-05-04 08:55:56

标签: python graph networkx

在NetworkX中,我有多个代表逻辑门的节点,因此,例如,我有多个AND节点。它们之间的区别在于属性:

G.add_node('AND', name='xyz')
G.add_node('AND', name='qwe')

我想在 specific AND节点上画一条边,例如,名称为“ xyz”。 我该怎么办?

我尝试过:

for node, attr in graph.nodes(data=True):
  if attr.get('xor_name') == xor_name:
     graph.add_edge(n1, node)

但是最后我只有一个AND节点,而不是多个。

1 个答案:

答案 0 :(得分:0)

您已多次添加节点AND,每次都添加了属性name。每次您用新值覆盖属性name的先前值时。

检查:

G.add_node('AND', name='xyz')
G.add_node('AND', name='qwe')
G.nodes(data=True) #data=True means it prints the attributes
> [('AND', {'name': 'qwe'})]

您打算将AND作为节点xyz的属性,而不是xyz作为节点AND的属性。因此,尝试:

G.add_node('xyz', nodetype = 'AND')
G.nodes(data=True)
> [('AND', {'name': 'qwe'}), ('xyz', {'nodetype': 'AND'})]
相关问题