首页 > 解决方案 > 根据 Python 中的值的总和迭代字典

问题描述

L1:第2列缺失值的索引列表。

dctn:字典以月份为键,每个月的缺失值数量为值。

我想替换列的值,直到值的总和为 0。

我尝试使用循环

while (sum(dctn.values())!=0):
 for i in L1:
  for k, v in dctn.items():
   if ( (df.iloc[i,0].month==k) and (v==1) ) :
    ...
    v=v-1
   if ( (df.iloc[i,0].month==k) and (v==2) ):
    ...
    v=v-1

无限循环,不显示任何结果。

标签: pythonwhile-loop

解决方案


你不能修改这样的值。你想要的是这个

for k, v in dictn.items():
  if <condition>:
    ...
    dictn[k] -= 1

items给出一个视图对象[1],这意味着它为您提供反映字典中内容的,但它们不是指向项目的指针。您应该将v其视为循环开始时值的快照。

[1] https://docs.python.org/3/library/stdtypes.html#dict.items


推荐阅读