根据您的描述,我认为您正在尝试创建一个完整的图形。Networkx有一个内置的方法可以创建一个完整的图形。
import networkx as nx
G=nx.complete_graph(4)
G.edges()
>[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
如果你不想让节点被命名为0,1,2,3
,那么你可以使用其他名称重新命名G
中的节点。按照上面的命令执行以下操作:
nodenames = ['a', 'b', 'c', 'd']
mapping = {i:nodename for i,nodename in enumerate(nodenames)}
#now mapping looks like {0:'a', 1:'b', ...}
H=nx.relabel_nodes(G,mapping)
H.edges()
> [('a', 'c'), ('a', 'b'), ('a', 'd'), ('c', 'b'), ('c', 'd'), ('b', 'd')]
(注:我不喜欢使用字典推导式来定义mapping
,如果有人能给我一个更直接的版本而不需要枚举,我将不胜感激。)
dict(enumerate(nodenames))
。 - undefined