2016-05-25 65 views
1

我在這裏發佈這兩個作爲一個答案(以下)和一個問題。Python的networkx圖形副本進入遞歸循環,並失敗

我正在複製圖形,然後修剪某些邊緣,增加我的路徑搜索,然後修剪和重複(在遞歸的深度優先路徑搜索中)。

問:

我明白輕輕淺拷貝和deepcopy的之間的區別,但任何人都可以指教我兩個複製圖形時的後果是什麼?因爲使用networkx copy功能時

我的問題是:

G2 = G.copy() 

我認爲創建一個deepcopy的,我進入了一個遞歸複製循環,最終失敗(下圖)。我發現使用淺拷貝:

G2 = nx.MultiDiGraph(G) 

沒有發生這樣的問題。但是,我想知道是否可能需要使用另一種,或者一般情況下更可取?

deepcopy的問題:

的deepcopy的進入recurvie複製循環和失敗,爲什麼? enter image description here

回答

1

我終於發現,我還沒有看到沿着提到的其他地方,因此我在這裏張貼他人的將來參考線什麼,這個問題的根源是,我的節點名稱是beautifulSoup NavigableStrings而不是字符串

我的節點名被解析一些HTML與沿行的創建的函數產生:

(soup.find(class_='from').abbr.string, soup.find(class_='tp').abbr.string) 

簡單地轉換NavigableStrings爲字符串固定的問題:

(str(soup.find(class_='from').abbr.string), str(soup.find(class_='tp').abbr.string))