Python networkx图形副本进入递归循环并失败

时间:2016-05-25 09:22:09

标签: python python-3.x recursion copy networkx

我在这里发布这个作为答案(跟随)和问题。

我正在复制图形然后修剪某些边缘,增加路径搜索,然后修剪并重复(在递归,深度优先路径搜索中)。

问题:

我清楚地理解浅拷贝和深度拷贝之间的区别,但是有人可以告诉我复制图形时两者的后果吗?

我的问题出现了,因为在使用networkx copy函数时:

G2 = G.copy()

我相信创建了一个深度复制,我进入了一个最终失败的递归复制循环(截图如下)。我发现使用浅拷贝:

G2 = nx.MultiDiGraph(G)

没有发生这样的问题。但是我想知道我是否可能需要使用一个而不是另一个或者一般是否更好?

深度检查问题:

deepcopy进入recurvie复制循环并失败,为什么? enter image description here

1 个答案:

答案 0 :(得分: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))