如何在julia中将具有2种不同类型的新dict添加到新数组中

时间:2015-08-11 00:47:17

标签: julia

如何将一个包含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}

1 个答案:

答案 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中弃用。