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

如何对多个Node类实例中neighbour字典的所有值求和?

如何对所有Node类实例的neighbour字典值求和?

我定义了如下的Node类,并且创建了N1到N10多个实例,每个实例的neighbour属性是一个字典。现在我希望把所有这些实例的neighbour字典里的所有值加起来,请问有没有可行的实现方法?

代码定义:

class Node: 
    def __init__(self, name, neighbour): 
        self.neighbour = {} 
        self.name = name 
        self.neighbour = dict(neighbour)

N1 = Node('N1', {'N7': 15, 'N6': 5, 'N5': 20, 'N4': 20, 'N2': 10})
N2 = Node('N2', {'N4': 10, 'N3': 5})
# N3 到 N10 的实例定义省略

当然有办法啦!这里有几种简单可行的实现方式,你可以根据自己的场景选择:

方法1:手动收集实例后求和

如果你的Node实例数量不多,或者已经知道所有实例的名字,可以先把它们放到一个列表里,再用嵌套的生成器表达式一次性求和:

# 先把所有Node实例存入列表
nodes = [N1, N2, N3, N4, N5, N6, N7, N8, N9, N10]
# 计算所有neighbour字典值的总和
total_sum = sum(value for node in nodes for value in node.neighbour.values())
print(total_sum)

方法2:循环累加(更直观)

如果你觉得生成器表达式有点绕,也可以用两层循环来逐步累加,逻辑更清晰:

nodes = [N1, N2, N3, N4, N5, N6, N7, N8, N9, N10]
total_sum = 0
for node in nodes:
    # 先累加当前节点的neighbour值总和,再加到全局总和里
    total_sum += sum(node.neighbour.values())
print(total_sum)

方法3:自动收集所有Node实例

如果你的实例很多,或者是动态创建的,不想手动列出来,可以通过globals()自动收集当前作用域下所有的Node实例:

# 从全局变量中筛选出所有Node类的实例
nodes = [obj for name, obj in globals().items() if isinstance(obj, Node)]
# 同样用sum求和
total_sum = sum(value for node in nodes for value in node.neighbour.values())
print(total_sum)

补充说明

  • 上面三种方法最终的结果是完全一致的,只是实现方式不同
  • 如果你的Node实例是在某个局部作用域里创建的,把globals()换成locals()即可
  • 要注意排除掉可能存在的其他Node类实例(如果有的话),可以根据实例的name属性再做一次筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:17