NetworkX nó travessia
Pergunta
Usando biblioteca NetworkX de Python, eu criei um grafo não direcionado para representar uma rede de relacionamento entre várias pessoas. Um trecho do meu código está abaixo:
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
Pelo que eu entendo, cada nó é basicamente um dicionário. O problema que isto representa para mim é que eu quero executar um tipo diferente de algoritmo Passeio Aleatório. Agora, antes de saltar sobre mim e me dizem para usar uma das funções padrão da biblioteca NetworkX, eu quero salientar que é um algoritmo personalizado. Suponha que eu executar a função creategraph, eo objeto G é retornada e armazenada em outro objeto (vamos chamá-lo X). Eu quero começar em um nó chamado 'Bob'. Bob está conectado a Alice e Joe. Agora, eu quero transferir Y para apontar para Alice ou Bob aleatoriamente (com os dados que eu estou lidando com um dado nó pode ter centenas de bordas deixando-a). Como faço para ir sobre como fazer isso? Além disso, como faço para lidar com entradas Unicode em dict de um determinado nó (como a forma como Alice e Joe estão listados abaixo?)
X = creategraph("filename")
Y=X['Bob']
print Y
>> {u'Alice': {}, u'Joe': {}}
Solução
O escolha na módulo aleatório poderia ajudar com o processo de seleção. Você realmente não precisa se preocupar com a distinção entre unicode e corda a menos que você está tentando escrevê-los em algum lugar como às vezes caracteres Unicode não são traduzíveis para o charset ASCII que Python padrão é.
A maneira como você usaria random.choice seria algo ao longo das linhas de:
Y = Y[random.choice(Y.keys())]