使用 python networkx 时是否可以将多个标签添加到单个节点(即主标签,然后是子标签)?

When using python networkx is it possible to add multiple labels to a single node (i.e. a main label and then a sub label)?

当使用 python networkx 时,是否可以将多个标签添加到单个节点(即每个节点中有一个主标签,然后是一个子标签)?

节点可以是任何可散列的 Python 对象。如果需要,您可以使用多个标签的元组。

来自文档:https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.Graph.add_node.html#networkx.Graph.add_node

可散列对象是可以用作 Python 字典中的键的对象。这包括字符串、数字、字符串和数字的元组等。

在许多平台上,可散列项还包括诸如 NetworkX Graphs 之类的可变对象,但应注意散列不会随可变对象发生变化。

如果你的意思是 'attribute' 代表 'label',那么你可以(至少)通过两种方式做到这一点

例如:

import networkx as nx
G = nx.Graph()
G.add_node('Bob', {'age':45, 'gender':'male'})
G.node['Bob']['age']
> 45
G.add_node('Sara', age=40, gender = 'female')
G.node['Sara']['age']
> 40
G.node['Sara']['gender']
> 'female'

请注意,在 'Sara' 的赋值中,我不需要将属性名称变成字符串,但是当我访问它们时,我做到了。

另一方面,如果您的意思是您希望在引用节点时为该节点使用两个不同的名称,那就另当别论了。例如,假设您想使用 G.neighbors(node_name) 访问给定节点的邻居,您将无法交替使用 'Robert''Bob' 作为节点名称(除非我有一些东西我不知道)。