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

NetworkX中按节点度排序节点的更优实现方法咨询

更简洁的NetworkX节点按度数排序方法

嘿,完全懂你觉得那个列表推导有点啰嗦的感受!在NetworkX的新版本中,DegreeView确实不再支持旧版的.values()调用了,但咱们有几个更清爽的实现方式,不用先手动转成列表:

1. 直接对DegreeView排序(节点+度数对)

其实G.degree()返回的DegreeView本身就是可迭代对象,你可以直接把它传给sorted(),省去中间的列表推导步骤:

sorted(G.degree(), key=lambda x: x[1], reverse=True)

这个写法和你原来的逻辑完全一致,但更简洁——sorted会自动迭代DegreeView里的每个(node, degree)元组,按度数倒序排列。

2. 仅排序节点(不需要度数值)

如果你的需求只是得到按度数排序的节点列表,不用附带度数,那可以直接基于节点集合排序,把每个节点的度数作为排序key:

sorted(G.nodes(), key=lambda node: G.degree(node), reverse=True)

这个写法更直观,直接针对节点操作,省去了处理元组的步骤。

3. 排序唯一度数集合(替代旧版sorted(set(G.degree().values())))

如果你只是想得到排序后的唯一度数值集合,用生成器表达式提取度数就行,比先转列表再去重更高效:

sorted({degree for _, degree in G.degree()})
# 或者更直白的写法:
sorted(set(degree for _, degree in G.degree()))

两种写法都能得到和旧版代码一样的结果,而且适配新版本NetworkX。

根据你的具体需求选对应的方法就行,比原来的列表推导简洁不少~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:55:27