循环完成时计算程序中断

我有一个名为 nested_group_map 的字典,基于 4 个组,每个组中有一个名为 shed_count 的键。我怎样才能制作一个程序,通过迭代 +1 键/值,然后在 shed_count通过范围循环是否完成?基本上我在想的是每个组中的 nested_group_map 应该 == cycles which 12.

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

shed_count

这只会创建一个无限循环,任何新手提示都值得赞赏:)

jinruien0219 回答:循环完成时计算程序中断

当你这样做

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

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

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

这是@enzo 帮助下的完整答案。我也不得不删除 np.all() 出于任何原因我不能让它太工作。所以我在返回布尔值的 return sum(check_sum) == len(check_sum) * cycles 函数中使用了 cycle_checker 代替

cycles = 12

# data structure
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}')
    
    # returns boolean
    return sum(check_sum) == len(check_sum) * cycles


def run_another_cylce():
    for group in nested_group_map:
        group_map = nested_group_map[group]
        for k,v in group_map.items():
            group_map[k] = v + 1
            
            
while not cycle_checker(cycles):
    run_another_cylce()

这就是我希望看到的,基本上填满垃圾箱 (shed_count) 直到它们全部填满 cycles

打印:

cycle_checker appended after for loop is [12,0]
cycle_checker appended after for loop is [12,1,1]
cycle_checker appended after for loop is [12,2,2]
cycle_checker appended after for loop is [12,3,3]
cycle_checker appended after for loop is [12,4,4]
cycle_checker appended after for loop is [12,5,5]
cycle_checker appended after for loop is [12,6,6]
cycle_checker appended after for loop is [12,7,7]
cycle_checker appended after for loop is [12,8,8]
cycle_checker appended after for loop is [12,9,9]
cycle_checker appended after for loop is [12,10,10]
cycle_checker appended after for loop is [12,11,11]
cycle_checker appended after for loop is [12,12,12]
本文链接:https://www.f2er.com/4173.html

大家都在问