You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python介数中心性得分字典中提取输出Top10节点

可用实现方案

方案1:内置sorted快速实现

对4039个节点的字典规模来说,直接用Python内置的sorted方法做全量排序后截取前10项,完全没有性能压力,写起来也最直接。
核心代码:

# 按得分从高到低排序,取前10个节点对
top10 = sorted(bt.items(), key=lambda x: x[1], reverse=True)[:10]

逻辑说明:

  • bt.items()遍历字典所有的「节点编号-得分」映射对
  • key=lambda x: x[1]指定排序时按元组中的得分值比较,避免默认按节点编号排序
  • reverse=True设置为降序排列
  • [:10]切片直接取排序后的前10个元素

如果需要规整输出,直接遍历结果打印即可:

for idx, (node, score) in enumerate(top10, start=1):
    print(f"排名{idx} | 节点ID: {node} | 介数中心性得分: {score:.6f}")

方案2:基于heapq的高性能TopN筛选

如果后续节点规模会进一步扩大,可以用标准库heapq的nlargest方法实现,它不需要对全量数据做完整排序,仅维护一个容量为10的最小堆来筛选最大值,时间复杂度远低于全量排序。
核心代码:

import heapq

# 直接筛选得分最高的10个映射对
top10 = heapq.nlargest(10, bt.items(), key=lambda x: x[1])

对当前4039个节点的规模,两种方法的运行耗时基本没有差异,但heapq.nlargest的写法更贴合TopN筛选的语义,性能优势会在节点规模达到十万级以上时明显体现。

补充说明

  • 两种方法均为稳定排序,遇到得分完全相同的节点时,会保持原字典中的相对顺序,不会出现乱序
  • 介数中心性的浮点得分可以直接作为排序依据,不需要额外做格式转换,内置排序逻辑完全兼容

内容的提问来源于stack exchange,提问作者Zerone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 21:36:02