2016-06-29 6 views

Antwort

0

I versuchte es ohne einen Bibliotheksimport. Ich habe zuerst ein einfaches Wörterbuch erstellt.

x={'A':['B','C','D'],'B':['C','D'],'C':['D']} 
for i,j in x.items(): 
    for p in j: 
     if p not in x.keys(): 
       x[p]=[] 
     if p in x[i] and i not in x[p]: 
       x[p].append(i) 
print x 
{'A': ['B', 'C', 'D'], 'C': ['D', 'A', 'B'], 'B': ['C', 'D', 'A'], 'D': ['A', 'C', 'B']} 
+0

Es sieht so aus, als ob Sie keine redundanten Kanten wünschen, daher sollten Sie Sets anstelle von Listen verwenden. – Scott

1

Ist es in einer CSV-Datei erstellen kann? Es sieht so aus, als ob Sie von den Daten, die Sie zur Verfügung stellen, einen ungerichteten Graphen erstellen. Unter der Annahme, dass die Daten in einer Art von "Zeilen" Typ-Format, das man kann eine Schleife durch, (dh row [0] ist der city1 Wert und row [1] ist der city2 Wert):

from collections import defaultdict 

def make_graph(data): 
    graph = defaultdict(set) 
    for row in data: 
     graph[row[0]].add(row[1]) 
     graph[row[1]].add(row[0]) #delete this line if you want a directed graph 
    return graph 

data = [ 
    ['A','B'], 
    ['C','D'], 
    ['A','C'] 
] 

print make_graph(data) 
Verwandte Themen