Networkx节点遍历

0 投票
1 回答
1577 浏览
提问于 2025-04-15 14:33

我使用Python的Networkx库创建了一个无向图,用来表示不同人之间的关系网络。下面是我代码的一部分:

import networkx as nx
def creategraph(filepath):
    G=nx.Graph()
    #All the various nodes and edges are added in this stretch of code.
    return G

根据我的理解,每个节点基本上就是一个字典。现在我遇到的问题是,我想执行一种不同的随机游走算法。在你们告诉我使用Networkx库的标准函数之前,我想说明这是一个自定义算法。假设我运行了creategraph函数,返回的G对象被存储在另一个对象中(我们称它为X)。我想从一个叫“Bob”的节点开始。Bob和Alice以及Joe是相连的。现在,我想随机将Y重新指向Alice或Bob(因为我处理的数据中,一个节点可能有数百条边)。我该怎么做呢?另外,我该如何处理节点字典中的unicode条目(比如下面列出的Alice和Joe)?

X = creategraph("filename")
Y=X['Bob']
print Y
>> {u'Alice': {}, u'Joe': {}}

1 个回答

4

random 模块里,有一个叫 choice 的函数,可以帮助你选择东西。其实,除非你要把它们写到某个地方,不然你不需要太担心 unicode 和字符串之间的区别,因为有时候 unicode 字符不能转换成 Python 默认的 ASCII 字符集。

使用 random.choice 的方法大概是这样的:

Y = Y[random.choice(Y.keys())]

撰写回答