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

如何迭代nested_group_map累加shed_count到cycles值后终止循环

问题核心原因
  • 数值未真正更新:整数是不可变类型,你遍历values得到的v只是原shed_count数值的临时拷贝,执行v = v + 1只会修改临时变量,不会改动原字典里的shed_count,所以所有分组的shed_count永远保持初始值0。
  • 终止判断逻辑错误:np.all(check_sum)的作用是判断列表中所有元素都不为0,完全不符合你需要的「所有shed_count等于cycles」的判断要求,再加上shed_count永远为0,所以while循环条件永远成立,进入死循环。
修改建议
  1. 直接通过键名修改原字典的shed_count,不要遍历values用临时变量操作,因为你已经明确知道要修改的键叫shed_count,不需要额外遍历判断键名。
  2. 你已经明确要循环cycles次,完全可以直接用for _ in range(cycles)实现,不需要额外写判断函数,逻辑更简单不容易出错。
  3. 如果一定要保留判断终止的写法,重写判断逻辑,只要有一个分组的shed_count没达到目标值就返回False,全部达到才返回True。
最简修正代码(推荐新手使用)
cycles = 12

nested_group_map = {
    'group_l1n': {'shed_count': 0},
    'group_l1s': {'shed_count': 0},
    'group_l2n': {'shed_count': 0},
    'group_l2s': {'shed_count': 0}
}

# 直接循环指定次数,不需要额外判断
for _ in range(cycles):
    for group in nested_group_map.values():
        group['shed_count'] += 1

# 打印验证结果
for group_name, info in nested_group_map.items():
    print(f"{group_name}的shed_count:{info['shed_count']}")
保留原while判断逻辑的修正代码
cycles = 12

nested_group_map = {
    'group_l1n': {'shed_count': 0},
    'group_l1s': {'shed_count': 0},
    'group_l2n': {'shed_count': 0},
    'group_l2s': {'shed_count': 0}
}

def cycle_checker(target):
    # 判断所有分组的shed_count都等于目标值
    for group in nested_group_map.values():
        if group['shed_count'] != target:
            return False
    return True

while not cycle_checker(cycles):
    for group in nested_group_map.values():
        group['shed_count'] += 1
        # 需要打印的话直接取原字典的值
        print(group['shed_count'])

# 打印验证结果
for group_name, info in nested_group_map.items():
    print(f"{group_name}的shed_count:{info['shed_count']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:30:00