在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节点,而不是多个。
答案 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'})]