如何在NetworkX中提取节点属性最大值对应的节点键并存入新列表/字典
提取Closeness中心性最大节点的实现方法
假设你已经完成空手道网络的加载、Betweenness和Closeness中心性的计算及节点属性设置,下面是提取目标节点并存储的具体实现:
单节点最大值场景
如果只有一个节点的Closeness值最大(比如你提到的节点1),可以直接用max函数定位:
import networkx as nx # 加载空手道网络(你应该已经完成这一步) G = nx.read_gml("karate.gml") # 假设你已经执行过以下代码设置节点属性: # closeness_centrality = nx.closeness_centrality(G) # nx.set_node_attributes(G, closeness_centrality, "closeness") # 获取Closeness值最大的节点键 max_closeness_node = max(G.nodes(data=True), key=lambda item: item[1]["closeness"])[0] # 添加到新列表 target_list = [] target_list.append(max_closeness_node) # 或者添加到字典 target_dict = {} target_dict["max_closeness_node"] = max_closeness_node
代码说明
G.nodes(data=True)返回所有节点的元组,格式为(节点ID, {属性键值对})lambda item: item[1]["closeness"]指定max函数以节点的closeness属性值作为比较依据- 取元组的第一个元素
[0],就能得到节点的键(即你需要的1)
多节点并列最大值场景
如果存在多个节点的Closeness值并列最大,用列表推导筛选所有符合条件的节点:
# 先获取最大的Closeness属性值 max_closeness_val = max(nx.get_node_attributes(G, "closeness").values()) # 筛选所有值等于最大值的节点 max_nodes = [node for node, attr in G.nodes(data=True) if attr["closeness"] == max_closeness_val] # 存储到列表或字典 target_list.extend(max_nodes) target_dict["max_closeness_nodes"] = max_nodes
内容的提问来源于stack exchange,提问作者user19092610
相关产品推荐
相关产品推荐

