首页 > 解决方案 > 循环完成时计算程序中断

问题描述

我有nested_group_map基于 4 个组的字典,每个组都有一个shed_count在每个组中调用的键。我如何制作一个程序,通过遍历键/值以范围循环方式添加+1到每个程序,然后在通过范围循环的次数完成时中断?基本上我在想的是每组应该==哪12个。shed_countnested_group_mapcyclesshed_countcycles

抱歉有点奇怪的问题,希望这是有道理的。

import numpy as np

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(cycles):
    check_sum = [int(cycles)]
    print(f'cycle_checker after for loop sum is {sum(check_sum)}')
    print(f'cycle_checker appended after for loop is {check_sum}')

    for group in nested_group_map:
        for k,v in nested_group_map[group].items():
            if k in ('shed_count'):
                check_sum.append(int(v))
                
    print(f'cycle_checker after for loop sum is {sum(check_sum)}')
    print(f'cycle_checker appended after for loop is {check_sum}')

    return np.all(check_sum)


while not cycle_checker(cycles):
    for group in nested_group_map:
        for v in nested_group_map[group].values():
            v = v + 1
            print(v)

这只会创建一个无限循环,感谢任何新手提示:)

标签: pythonalgorithmdata-structures

解决方案


当你这样做

for v in nested_group_map[group].values():
    v = v + 1

你没有nested_group_map以任何方式改变。请查看此答案以获得简要说明。为此,您必须使用密钥明确写入:

group_map = nested_group_map[group]
for k, v in group_map.items():
    group_map[k] = v + 1

推荐阅读