如何将一个包含2种不同字段类型的dict(float和float的1D数组)添加到嵌套在已存在的dict中的数组?
' allmeas'到目前为止,结构已经存在:
allmeas[measkey]["manreps"][num_manrep]
我试图像这样添加:
allmeas[measkey]["manreps"][num_manrep]["autoreps"] = Array{Dict{Any,Any},1}
num_autorep = 1
meas_1D_array = [1,2,3,4,5,6]
meas_single_value = 10
newmeas = {"meas_1D_array"=> meas_1D_array ,"meas_single_value"=> meas_single_value}
allmeas[measkey]["manreps"][num_manrep]["autoreps"][num_autorep] = newmeas
我得到的错误是在最后一行:
`setindex!` has no method matching setindex!(::Type{Array{Dict{Any,Any},1}}, ::Dict{Any,Any}, ::Int64)
如果我看一下每一方的类型,我会得到:
typeof(allmeas[measkey]["manreps"][num_manrep]["autoreps"]) is Array{Dict{Any,Any},1}
typeof(newmeas) is Dict{Any,Any}
答案 0 :(得分:1)
此处的问题是Array{Dict{Any,Any},1}
是类型,其中1
表示维度数。你的意思是它是一个长度为1的未初始化数组。尝试用Array(Dict{Any, Any}, 1)
替换它。请参阅the Array construction section of the manual。
在示例中用allmeas[measkey]["manreps"][num_manrep]["autoreps"]
替换x
:
julia> x = Array(Dict{Any, Any}, 1)
1-element Array{Dict{Any,Any},1}:
#undef
julia> newmeas = {"meas_1D_array"=> [1, 2, 3, 4, 5, 6], "meas_single_value"=> 10}
Dict{Any,Any} with 2 entries:
"meas_single_value" => 10
"meas_1D_array" => [1,2,3,4,5,6]
julia> x[1] = newmeas;
julia> x
1-element Array{Dict{Any,Any},1}:
{"meas_single_value"=>10,"meas_1D_array"=>[1,2,3,4,5,6]}
类型和数组初始化的语法非常相似,因此很容易犯错误。将花括号视为始终与类型有关。例外情况是,在Julia 0.3中,您可以使用{1, 2, 3}
创建数组和字典。但是,这种行为将在即将发布的Julia 0.4中弃用。