Domanda

Utilizzando biblioteca NetworkX di Python, ho creato un grafo non orientato per rappresentare una rete di relazioni tra le varie persone. Un frammento di mio codice è qui sotto:

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

Da quello che ho capito, ogni nodo è fondamentalmente un dizionario. Il problema che questo presenta a me è che voglio per eseguire un diverso tipo di algoritmo di Random Walk. Ora prima di saltare su di me e mi dicono di utilizzare una delle funzioni standard della biblioteca NetworkX, voglio sottolineare che si tratta di un algoritmo personalizzato. Supponiamo che io corro la funzione creategraph, e l'oggetto G è tornato e memorizzati in un altro oggetto (chiamiamolo X). Voglio cominciare ad un nodo denominato 'Bob'. Bob è collegato ad Alice e Joe. Ora, voglio riassegnare Y per puntare a Alice o Bob a caso (con i dati ho a che fare con un dato nodo potrebbe avere centinaia di bordi lasciando esso). Come procedo a fare questo? Inoltre, come faccio a trattare con le voci Unicode in dict di un determinato nodo (come come Alice e Joe sono elencati di seguito?)

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

Soluzione

Il funzione nel modulo casuale potrebbe aiutare con il processo di selezione. Non avete davvero bisogno di preoccuparsi della distinzione tra unicode e la stringa a meno che non si sta cercando di scrivere loro fuori da qualche parte, come a volte i caratteri Unicode non sono traducibili nel set di caratteri ASCII che Python default.

Il modo in cui usereste random.choice sarebbe qualcosa sulla falsariga di:

Y = Y[random.choice(Y.keys())]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top