我有一个名为 nested_group_map
的字典,基于 4 个组,每个组中有一个名为 shed_count
的键。我怎样才能制作一个程序,通过迭代 +1
键/值,然后在 shed_count
通过范围循环是否完成?基本上我在想的是每个组中的 nested_group_map
应该 == cycles
which 12.
抱歉有点奇怪的问题,希望这是有道理的。
shed_count
这只会创建一个无限循环,任何新手提示都值得赞赏:)
当你这样做
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]