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

如何从字典各键中获取多个最大值(或Top N值)

网络社区分析:获取每个社区Top3最高度节点

需求背景

已基于NetworkX和community库完成网络社区聚类,生成了社区编号到节点列表的communities_dict,原代码仅能获取每个社区的单个最高度节点,现需修改为获取每个社区的Top3最高度节点。

原代码实现(获取单个最高度节点)

communities_dict = {1: ["A","B","C","D","E","F","G","CB"],
                    2: ["H","I","J","K","L","M","N","XY"],
                    3: ["O","P","Q","R","S","T","U","GT"],
                    4: ["V","W","X","Y","Z","AB","HH","FF"],
                    5: ["CD","EF","GH","IJ","KL","HG","FR","RR"]}
# 加载网络图
G = nx.read_adjlist("./data/networkgraph.csv", delimiter = ',')
# 聚类网络图
partition = community.best_partition(G)
# 获取社区集合
communities = set(partition.values())
# 创建社区编号到对应节点的字典
communities_dict = {c: [k for k, v in partition.items() if v == c] for c in communities}
# 获取每个社区最高度节点的代码
highest_degree = {k: max(v, key=lambda x: G.degree(x)) for k, v in communities_dict.items()}

原代码输出结果:

1: "A"
2: "I"
3: "Q"
4: "AB" 
5: "CD" 

修改后代码(获取Top3最高度节点)

只需替换获取最高度节点的代码行,实现排序取前3的逻辑:

# 获取每个社区Top3最高度节点
top3_degree = {
    k: sorted(v, key=lambda x: G.degree(x), reverse=True)[:3]
    for k, v in communities_dict.items()
}

修改说明

  • 用sorted()替代max(),通过reverse=True将社区内节点按度数降序排列
  • 利用切片[:3]截取排序后的前3个节点,即为该社区的Top3最高度节点

预期输出示例

1: ["A","B","C"]
2: ["I", "J","K"]
3: ["Q","P","O"]
4: ["V","W","X"]
5: ["CD", "EF","GH"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:48:31