如何原地修改Python字典中存储的列表的元素值
问题原因
你编写的代码无法实现预期效果的核心原因是:Python中的整数、浮点数都属于不可变类型,嵌套循环中拿到的x只是原列表元素的临时拷贝,修改x的值不会同步到原列表中。同时代码末尾的return x属于冗余逻辑,没有将修改回写到原数据容器中。
正确实现
要满足不创建新字典、不创建新列表的要求,只需通过索引原位修改列表的对应元素即可,代码如下:
for num_list in scores.values(): # 遍历列表索引,直接修改原列表对应位置的数值 for idx in range(len(num_list)): num_list[idx] *= 0.5
效果验证
运行上述代码后,打印scores即可得到预期结果:{'Anna': [63.5, 75.0, 84.0], 'Jamie': [94.0, 88.0, 95.0]}
如果需要整数值可以修改赋值逻辑为num_list[idx] = int(num_list[idx] * 0.5)。
内容的提问来源于stack exchange,提问作者user15103706
相关产品推荐
相关产品推荐

