为排除Networkx

时间:2015-12-04 05:55:11

标签: python python-2.7 networkx

我正在尝试编写一个函数,该函数将从图形中的特定节点移除2个随机边,但具有另一个特定节点的边除外。我正在使用Python Networkx包。这是我的代码:

close = nx.closeness_centrality(self.combined_network) #This calculates closeness
self.most_central_node = max(close.items(), key=itemgetter(1))[0] identifies the maximum centrality
self.combined_network.add_edge(self.most_central_node, 'bad_apple_Bad_apple') adds an edge from the most central node to a specific node

我接下来要做的是请求self.most_central_node打破2条边(随机),但不要破坏我刚用'bad_apple_Bad_apple'创建的边缘。我尝试首先使用:

选择most_central_node的邻居
Neighb = (B.neighbors(most_central_node))

这有效,但它返回一个列表。现在我正在尝试构建没有“bad_apple_Bad_apple”

的列表

我试过了:

n2 = B.node['bad_apple_0']
n3 = (item for item in Neighb if item not in n2)

我认为这不起作用。当我在控制台中打印n3时,我得到:
<generator object <genexpr> at 0x00000000203845E8>

我做错了什么?然后,我需要随机选择其中的2个来请求most_central_node用它们打破它的边缘。有人也指出了这个方向吗?

1 个答案:

答案 0 :(得分:0)

我解决了它:

if 'bad_apple_0' in Neighb: Neighb.remove('bad_apple_0')

谢谢!