为何字典键未更新?如何动态更新键存储循环生成值?
问题原因与解决方法
问题根源
你这段代码里的numbers + 1只是做了加法运算,但没有把运算结果存回numbers变量里——也就是说numbers的值自始至终都是1,每次循环都在重复覆盖字典中键1对应的值,最后自然只剩最后一次循环的10。
修复方案
方案1:修正变量赋值
把numbers + 1改成赋值操作,让numbers每次循环都真正递增:
counting = {} numbers = 1 for i in range(1, 11): counting[numbers] = i numbers += 1 # 用 += 完成自增赋值,等价于 numbers = numbers + 1 print(counting)
方案2:直接用循环变量当键
既然循环的i本身就是从1到10递增的,完全可以省去numbers变量,直接用i作为字典的键:
counting = {} for i in range(1, 11): counting[i] = i print(counting)
方案3:用字典推导式简化代码
如果追求简洁,一行代码就能生成目标字典:
counting = {i: i for i in range(1, 11)} print(counting)
以上三种方法都能得到完整的字典{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10}。
内容的提问来源于stack exchange,提问作者noob
相关产品推荐
相关产品推荐

