2016-11-13 17 views
2

我有鍵的字典,如下所示:朱莉婭 - 使用詞典密鑰作爲指數爲多維數組

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) 

這些鍵顯着變化既關於範圍和長度,它們由一個陣列中的開始時被初始化功能我寫...這可能看起來像

[2,3,2] 

以上的字典...,

[10,3,50,60] 

創建與鍵

[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 

如何使用字典中的鍵將result_array的索引設置爲尊重值?

+0

不是爲每個索引鍵分配數組,而是使用CartesianIndex更好。請參閱http://julialang.org/blog/2016/02/iteration。 – tholy

回答

4

Splat鑰匙將result_array[[1,1,1]...]轉換爲result_array[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 
+1

要自動計算大小:'result_array = Array(Float64,map(maximum,zip(keys(testdict)...))...)'' –