如何解决无论权重如何,python都会找到前N个加权边
我正在寻找一种方法来找到节点中最大的 5 个加权边。有没有办法在没有特定阈值的情况下指定我想要最大的 5 个边(也就是任何加权图的通用)?
解决方法
您可以考虑按权重排序的边并构建一个字典,将节点与其边映射,按权重以非递增方式排序。
>>> from collections import defaultdict
>>> res = defaultdict(list)
>>> for u,v in sorted(G.edges(),key=lambda x: G.get_edge_data(x[0],x[1])["weight"],reverse=True):
... res[u].append((u,v))
... res[v].append((u,v))
...
然后,给定一个节点(例如,0
),您可以获得前 N 个(例如,5
)加权边
>>> res[0][:5]
[(0,7),(0,2),6),1),3)]
如果只需要对一个节点做(比如0),可以直接做:
>>> sorted_edges_u = sorted(G.edges(0),reverse=True)
>>> sorted_edges_u[:5]
[(0,3)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。