python - 根据 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
无限循环,不显示任何结果。
解决方案
你不能修改这样的值。你想要的是这个
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
推荐阅读
- pdf - 使用 Affinity Publisher 创建电子书
- scala - 我们可以在 Scala 的地图中使用 foreach 吗?
- python - somethingGoesWrong (PYTHON) - 大脑挑战
- r - 嵌套循环通过 R 中的结构化列表
- react-native - 带有 setTimeout 的 ActivityIndicator 不起作用 - 对本机博览会做出反应
- c# - 访问 UI 组件并由 Xamarin 中的另一个线程覆盖它
- python - python的多处理抛出struct.error
- rust - rust - 具有特征的泛型函数的返回类型
- docker - standard_init_linux.go:190: exec 用户进程导致“exec 格式错误”
- python - Spyder不生成用pygame生成的显示窗口