Julia-使用字典键作为多维数组的索引

Julia-使用字典键作为多维数组的索引,julia,Julia,我有一本带键的字典,如图所示: testdict = Dict{Array{Int64,1},Float64}([1,3,1] => 0.0, [2,3,1] => 0.0, [1,3,2] => 0.0, [2,3,2] => -2.64899e-16, [2,1,2] => 0.858307, [1,2,1] => 0.0, [1,2,2] => 0.0, [2,2,1] => 0.0, [2,2,2] => 0.65796, [2,1,

我有一本带键的字典,如图所示:

testdict = Dict{Array{Int64,1},Float64}([1,3,1] => 0.0, [2,3,1] => 0.0, [1,3,2] => 0.0, [2,3,2] => -2.64899e-16, [2,1,2] => 0.858307, [1,2,1] => 0.0, [1,2,2] => 0.0, [2,2,1] => 0.0, [2,2,2] => 0.65796, [2,1,1] => -5.81556e-16, [1,1,2] => -3.50541e-16, [1,1,1] => 0.0)
这些键在范围和长度上都有很大的不同,它们在函数Im writing的开头由一个数组初始化…看起来像

[2,3,2]
对于上面的词典

创建带键的词典

[1,1,1,1], [1,1,1,12] ... , [10, 3, 50, 59], [10,3, 50, 60]
我需要完成的是创建一个多维数组

result_array = Array(Float64, tuple([2,3,2])
但是我需要用字典中的值填充数组, 所以我需要将元素[1,1,1]设置为

result_array[1,1,1] = 0.0

如何使用字典中的键设置
结果数组的索引及其相关值?

s单击键可将
结果数组[[1,1,1]…]
转换为
结果数组[1,1,1]

testdict = Dict{Array{Int64,1},Float64}([1,3,1] => 0.0, [2,3,1] => 0.0, [1,3,2] => 0.0, [2,3,2] => -2.64899e-16, [2,1,2] => 0.858307, [1,2,1] => 0.0, [1,2,2] => 0.0, [2,2,1] => 0.0, [2,2,2] => 0.65796, [2,1,1] => -5.81556e-16, [1,1,2] => -3.50541e-16, [1,1,1] => 0.0)

result_array = Array(Float64,2,3,2)

for (k,v) in testdict
  result_array[k...] = testdict[k]
end

要自动计算大小:
result\u array=array(Float64,map(maximum,zip(keys(testdict)…))…)
在最新版本的Julia中,创建这样的数组将不再有效。您可以使用它:
result\u array=array{Float64}(undf,2,3,2)
与其为每个索引键分配一个数组,不如使用CartesianIndex。看见
testdict = Dict{Array{Int64,1},Float64}([1,3,1] => 0.0, [2,3,1] => 0.0, [1,3,2] => 0.0, [2,3,2] => -2.64899e-16, [2,1,2] => 0.858307, [1,2,1] => 0.0, [1,2,2] => 0.0, [2,2,1] => 0.0, [2,2,2] => 0.65796, [2,1,1] => -5.81556e-16, [1,1,2] => -3.50541e-16, [1,1,1] => 0.0)

result_array = Array(Float64,2,3,2)

for (k,v) in testdict
  result_array[k...] = testdict[k]
end