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

NetworkX节点gen属性解引用问题:如何获取属性值用于比较?

问题解决:正确获取NetworkX节点的gen属性值

你的问题出在nx.get_node_attributes(G, "gen")的使用上——它返回的是所有节点的属性字典(格式为{节点ID: 世代值}),而非当前循环节点的单个世代数值,所以无法直接和数值g做比较。

两种修正方案:

方案1:直接通过节点ID获取单个属性

把循环中获取属性的代码替换为直接读取当前节点的gen值:

for node in G.nodes(): # 遍历节点,寻找当前世代的节点
    level = G.nodes[node]['gen'] # 获取当前节点的gen属性数值
    print("check 1, level is:", level, "g is:", g)
    if level == g: 
      print("check 2")
      y = scipy.stats.poisson.rvs(mu=r, size=1) # 生成感染数量
      N[count] = N[count] + y # 更新感染计数

方案2:遍历节点时直接获取属性数据

使用G.nodes(data=True)同时拿到节点ID和属性字典,避免重复查询,效率更高:

for node, attrs in G.nodes(data=True): # 同时获取节点ID与属性字典
    level = attrs['gen']
    print("check 1, level is:", level, "g is:", g)
    if level == g: 
      print("check 2")
      y = scipy.stats.poisson.rvs(mu=r, size=1) # 生成感染数量
      N[count] = N[count] + y # 更新感染计数

另外注意:原代码中每次循环都调用nx.get_node_attributes属于冗余操作,会重复获取所有节点的属性,上述两种方案都能避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:01:17