2017-05-23 2 views
0

Ich habe ein Diagramm wie folgt aus:Python Graph Änderungen

{'0': {'4': 1}, 
'1': {}, 
'2': {'3': 1, '4': 1}, 
'3': {'2': 1}, 
'4': {'0': 1, '2': 1}} 

und ich möchte einige Änderungen vornehmen, indem eine bestimmte Kante zu entfernen, aber ich möchte auch die ursprüngliche Grafik behalten. So verwende ich

temp=copy.copy(graph) 

, um eine Kopie daraus zu machen. Und dann führe ich die Funktion aus (auf der neuen Kopie), die die spezifische Kante, die ich möchte, entfernt (zum Beispiel Kante drei, die in diesem Fall zwischen Knoten 2 und Knoten 3 liegt), aber was ich bekomme, ist, dass Veränderung auch im Original passiert Graph. Wie kann ich dieses Problem beheben?

Des Weiteren Der Code, der verwendet wird, um eine Kante zu entfernen, ist dies

def remove_links(graph_dic,edge_number): 
    count = 1 
    V,U = '',' ' 
    for item in temp.items(): 
     for node in item[1].items(): 
      if count==edge_number: 
       V = item[0] 
       U = node[0] 
      count+=1 
    del graph_dic[V][U] 
    return graph_dic 

Ich möchte keine Änderungen in der ursprünglichen Graphen haben, während auch eine bestimmte Kante zu entfernen, die ich auf der neuen Kopie wollen . Darüber hinaus Ich laufe es auf Jupyter Notebook ...

Antwort

1

aber was ich bekommen ist auch, dass Veränderungen in der ursprünglichen Grafik geschieht

Was Sie tun, aufgerufen wird: „Shallow Kopie“. Was Sie tun müssen, ist "Deep Copy". Sie möchten stattdessen verwenden: copy.deepcopy.