You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用for循环创建嵌套字典输出不符合预期问题求助

问题原因

Python中的字典属于可变引用类型,你代码中将io_dict['a']和io_dict['b']都赋值为同一个channel_dict对象,本质上这两个键指向的是内存中完全相同的字典地址。后续循环中不管修改哪一个键下的通道值,都是对同一个字典做修改,后面写入的[5,6,7]会直接覆盖之前写入的[1,2,3],最终两个键对应的字典内容完全一致。

修复方案

每次给io_dict的键赋值时,创建独立的通道字典即可,参考修正后的代码:

import numpy as np

io_dict = dict.fromkeys(['a', 'b'])
# 给a和b分别赋值独立的字典,不要共用同一个对象
io_dict['a'] = dict.fromkeys(['ch1', 'ch2'])
io_dict['b'] = dict.fromkeys(['ch1', 'ch2'])

for channel in io_dict['a'].keys():
    io_dict['a'][channel] = np.array([1,2,3])
    io_dict['b'][channel] = np.array([5,6,7])

print(io_dict)

如果你的channel_dict是提前定义好包含初始值的,也可以调用copy()方法创建独立副本,避免引用共用:

channel_dict = dict.fromkeys(['ch1', 'ch2'])
io_dict['a'] = channel_dict.copy()
io_dict['b'] = channel_dict.copy()

运行后即可得到你预期的输出结果。

内容的提问来源于stack exchange,提问作者Ian Gullett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 11:06:06