Python:如何在Python3中找到两个网络之间的唯一节点?
我有两个网络Python:如何在Python3中找到两个网络之间的唯一节点?,python,python-3.x,python-2.7,unique,networkx,Python,Python 3.x,Python 2.7,Unique,Networkx,我有两个网络G和G1,它们是通过networkx生成的 为了找到包含两个网络(即交叉点)之间的唯一节点的列表,我在python2.7中运行了以下命令,该命令非常有效 tmp2 = list(set(G.nodes) & set(G1.nodes)) 使用Python 3的机器中的相同命令返回以下错误: TyperError: 'method' object is not iterable 在Python3.x中是否有避免此错误的方法?此错误表明节点是Python3中的一个方法,因此
G
和G1
,它们是通过networkx
生成的
为了找到包含两个网络(即交叉点)之间的唯一节点的列表,我在python2.7
中运行了以下命令,该命令非常有效
tmp2 = list(set(G.nodes) & set(G1.nodes))
使用Python 3的机器中的相同命令返回以下错误:
TyperError: 'method' object is not iterable
在
Python3.x
中是否有避免此错误的方法?此错误表明节点是Python3中的一个方法,因此代码应更改为列表(set(G.nodes())&set(G1.nodes())
以便实际调用它。错误表明节点是Python 3中的一个方法,因此代码应该更改为list(set(G.nodes())&set(G1.nodes())
以便实际调用它。在networkx 1.x版中,G.nodes
是一个方法,它返回G
的节点G.nodes()
是G
的节点列表。因此,对set(G.nodes)
的调用要求Python对方法进行设置。那是不可能的。它可以设置G
的节点。因此set(G.nodes())
起作用
在2.x版中,G.nodes
和G.nodes()
都是NodeView
对象。这些操作非常类似于列表(尽管存在差异)
因此,您的命令将在最新版本的networkx中运行,但不会在旧版本中运行。即使您切换到使用2.x
,我建议仍将其称为G.nodes()
,以防代码在早期版本中运行。在networkx 1.x版中,G.nodes
是一种方法,它返回G
的节点G.nodes()
是G
的节点列表。因此,对set(G.nodes)
的调用要求Python对方法进行设置。那是不可能的。它可以设置G
的节点。因此set(G.nodes())
起作用
在2.x版中,G.nodes
和G.nodes()
都是NodeView
对象。这些操作非常类似于列表(尽管存在差异)
因此,您的命令将在最新版本的networkx中运行,但不会在旧版本中运行。即使您切换到使用2.x
,我建议仍将其称为G.nodes()
,以防代码在早期版本中运行。我创建了一个简单的网络,无法重现您的问题,这意味着您没有提供解决方案。您的代码在Python 3 networkx 2.1版中运行良好。你能发布你的networkx版本吗?我创建了一个简单的网络,无法复制你的问题,这意味着你没有提供一个新的版本。您的代码在Python 3 networkx 2.1版中运行良好。你能发布你的networkx版本吗?