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

Python 2.7 NetworkX:如何筛选特定权重的邻居节点

获取NetworkX中满足权重条件的邻居节点方案(Python 2.7)

Hey Tim, 针对你在Python 2.7环境下使用NetworkX库,需要筛选出权重符合特定值或条件的邻居节点的需求,我整理了两个实用的实现方案:

方案一:遍历邻居节点并校验边权重

networkx.Graph.neighbors() 方法只会返回目标节点的邻居节点,不会附带边的权重信息,所以我们可以先拿到所有邻居,再逐个获取对应边的权重进行判断。

示例代码:

import networkx as nx

# 先创建一个带权重的示例图
G = nx.Graph()
G.add_edge('A', 'B', weight=5)
G.add_edge('A', 'C', weight=10)
G.add_edge('A', 'D', weight=5)
G.add_edge('B', 'C', weight=3)

def get_neighbors_by_weight(graph, node, weight_condition):
    """
    获取满足权重条件的邻居节点
    :param graph: NetworkX图对象
    :param node: 目标节点
    :param weight_condition: 权重判断函数,比如lambda w: w ==5 或 lambda w: w >7
    :return: 符合条件的邻居列表
    """
    qualified_neighbors = []
    for neighbor in graph.neighbors(node):
        # 获取当前边的权重,默认如果没有weight属性可以设默认值
        edge_weight = graph[node][neighbor].get('weight', 0)
        if weight_condition(edge_weight):
            qualified_neighbors.append(neighbor)
    return qualified_neighbors

# 示例1:获取节点A权重等于5的邻居
print(get_neighbors_by_weight(G, 'A', lambda w: w == 5))  # 输出: ['B', 'D']

# 示例2:获取节点A权重大于7的邻居
print(get_neighbors_by_weight(G, 'A', lambda w: w > 7))   # 输出: ['C']

方案二:直接遍历边并筛选

如果不想先调用neighbors(),也可以直接遍历图中所有和目标节点相关的边,通过边的信息筛选邻居:

示例代码:

def get_neighbors_by_weight_v2(graph, node, weight_condition):
    qualified_neighbors = []
    # 遍历所有和node相连的边,data=True会返回边的属性字典
    for u, v, attrs in graph.edges(node, data=True):
        edge_weight = attrs.get('weight', 0)
        # 确定邻居节点(因为边是u-v,u是目标node的话邻居是v,反之则是u)
        neighbor = v if u == node else u
        if weight_condition(edge_weight):
            qualified_neighbors.append(neighbor)
    return qualified_neighbors

# 测试同样的条件
print(get_neighbors_by_weight_v2(G, 'A', lambda w: w ==5))  # 输出: ['B', 'D']

注意事项

  • 确保你的图中的边都带有weight属性,如果部分边没有,记得在get('weight', 0)里设置合理的默认值,避免KeyError。
  • Python 2.7中print是语句,所以示例里直接用print()没问题,但如果是单独输出结果可以直接写print result。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:17