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

给字典数组的指定元素赋值时覆盖了数组全部值的原因是什么

问题原因

这是Julia内置fill函数的特性导致的。
当你执行fill(Dict("example" => 0.),3)时,fill不会为数组的每个位置单独生成新的字典实例,只会将同一个字典对象的内存引用重复填充到数组的三个位置。也就是说你看到的数组里的三个字典,本质上是同一个对象,不管修改哪个位置的字典键值,都是修改内存里的同一个数据,所以最终表现为所有元素都被覆盖。

解决方案

如果要生成每个元素都是独立字典的数组,替换fill写法为列表推导式即可:

a = [Dict("example" => 0.) for _ in 1:3]

这种写法每次循环都会创建一个新的字典实例,修改任意一个元素都不会影响其他元素。此时再执行a[1]["example"] = 1.后打印数组,就能得到预期结果:

[Dict("example" => 1.0), Dict("example" => 0.0), Dict("example" => 0.0)]

内容的提问来源于stack exchange,提问作者Karin Dekel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:39:00