我正在尝试编写一个函数,该函数将从图形中的特定节点移除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用它们打破它的边缘。有人也指出了这个方向吗?
答案 0 :(得分:0)
我解决了它:
if 'bad_apple_0' in Neighb: Neighb.remove('bad_apple_0')
谢谢!