Python:如何在python3中找到两个网络之间的唯一节点?

2024-04-18 22:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个网络GG1,它们是用networkx生成的。你知道吗

为了找到包含两个网络(即交叉点)之间的唯一节点的列表,我在Python 2.7中运行了下面的命令,该命令非常有效。你知道吗

tmp2 =  list(set(G.nodes) & set(G1.nodes))

在具有Python 3的计算机中,相同的命令返回以下错误:

TyperError: 'method' object is not iterable

有没有办法避免Python 3.x中的这个错误?你知道吗


Tags: 命令网络networkx列表节点计算机错误method
2条回答

在networkx版本1.x中,G.nodes是一个方法,它返回G的节点。G.nodes()G的节点列表。因此,对set(G.nodes)的调用要求Python对一个方法进行设置。那不可能。它可以把G的节点放在一起。所以set(G.nodes())起作用了。你知道吗

在版本2.x中,G.nodesG.nodes()都是NodeView对象。这些操作非常类似于列表(尽管有区别)。你知道吗

因此,您的命令将在最新版本的networkx中运行,但不会在旧版本中运行。即使您切换到使用2.x,我建议仍将其称为G.nodes(),以防代码在早期版本中运行。你知道吗

这个错误表明nodes是python3中的一个方法,因此应该将代码更改为list(set(G.nodes()) & set(G1.nodes())),以便实际调用它。你知道吗

相关问题 更多 >