Pregunta

El uso de la biblioteca de Python NetworkX, he creado un grafo no dirigido a representar una red relación entre varias personas. Un fragmento de mi código es el siguiente:

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

Por lo que entiendo, cada nodo es básicamente un diccionario. El problema que esto presenta para mí es que quiero llevar a cabo otro tipo de algoritmo de recorrido aleatorio. Ahora antes de saltar sobre mí y me dicen que usar una de las funciones estándar de la biblioteca NetworkX, quiero señalar que se trata de un algoritmo personalizado. Supongamos que ejecuta la función creategraph, y el objeto es devuelto G y almacenen de otro objeto (llamémosle X). Quiero empezar a bajar en un nodo denominado 'Bob'. Bob está conectado a Alice y Joe. Ahora, quiero volver a asignar Y para que apunte a Alice o Bob al azar (con los datos que estoy tratando, un nodo dado podría tener cientos de aristas que salen de ella). ¿Cómo voy a hacer esto? Además, ¿Cómo puedo lidiar con las entradas Unicode en dict de un nodo dado (como la forma de Alice y Joe se enumeran a continuación?)

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

Solución

El función en el módulo al azar podría ayudar con el proceso de selección. En realidad, no tiene que preocuparse acerca de la distinción entre Unicode y la cadena a menos que estés tratando de escribirlas en algún lugar ya que a veces los caracteres Unicode no son traducibles en el juego de caracteres ASCII que por defecto de Python a.

La forma en que tendría que utilizar random.choice sería algo a lo largo de las líneas de:

Y = Y[random.choice(Y.keys())]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top