2016-04-07 17 views
1

Juliaにタプル値を持つ辞書を構築する可能性はありますか?Julia:タプル値を持つ辞書を構築する

私は

dict = Dict{Int64, (Int64, Int64)}() 
dict = Dict{Int64, Tuple(Int64, Int64)}() 

を試してみました私はまた、タプル値を挿入しようとしたが、私はそう、彼らはタプルなかった後にそれらを変更することができました。

編集:

parallel_check = dictの{でも、(でも、どれ)}()

for i in 1:10 
    dict[i] = (i+41, i+41) 
end 

dict[1][2] = 1 # not able to change this way, setindex error! 

dict[1] = (3, 5) # this is acceptable. why? 

答えて

7

タプルタイプ(すなわち、タプルのタイプ)の構文は、バージョン0.3に(Int64,Int64)から変更及び先にTuple{Int64,Int64}に0.4。中括弧に注意してください。Int64,Int64の括弧ではありません。あなたはまた、例えばタプルにtypeof機能を適用することによって、REPLでこれを発見することができます。

julia> typeof((1,2)) 
Tuple{Int64,Int64} 

だから、あなたがこのようにしたい辞書を構築することができます。

julia> dict = Dict{Int64,Tuple{Int64,Int64}}() 
Dict{Int64,Tuple{Int64,Int64}} with 0 entries 

julia> dict[1] = (2,3) 
(2,3) 

julia> dict[2.0] = (3.0,4) 
(3.0,4) 

julia> dict 
Dict{Int64,Tuple{Int64,Int64}} with 2 entries: 
    2 => (3,4) 
    1 => (2,3) 

あなたの質問の他の部分があります無関係ですが、とにかくここで答えてください:タプルは不変です - タプルの要素の1つを変更することはできません。一方、辞書は変更可能であるため、辞書内のスロットにまったく新しいタプル値を割り当てることができます。つまり、dict[1] = (3,5)と書くとdictに割り当てられますが、これはOKですが、dict[1][2] = 1と書くとdict1のタプルに割り当てられていますが、これはOKではありません。

+0

しかし私は0.3を使用しています: –

+0

あなたが試した最初の構文がうまくいきます。 – StefanKarpinski

+0

ありがとうございます。私はそう思ったが、私は完全にはわからなかった。 –

関連する問題