2016-05-27 6 views
3

ジュリアの初心者はかなり混乱しています。ここでジュリアのタプルに配列

は配列です:

array=["a","b",1] 

私は

dict2 = Dict() 
dict2[array[1:2]]=1 

辞書を定義するために '配列' を使用したいが、そうでない辞書

dict=Dict() 
dict["a","b"]=1 

を定義します同じ、

julia> dict 
Dict{Any,Any} with 1 entry: 
    ("a","b") => 1 

julia> dict2 
Dict{Any,Any} with 1 entry: 
    Any["a","b"] => 1 

'dict2'ではなく 'dict'を生成するために 'array'を使う方法はありますか?ありがとう

答えて

6

あなたはスプラット演算子を使用することができます。

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

julia> dict[array[1:2]...] = 1 
1 

julia> dict 
Dict{Any,Any} with 1 entry: 
    ("a","b") => 1 

注:

dict = Dict{Tuple{String, String}, Int}() 
:あなたのDictの中で型を指定することができ、そのようには、これらのタイプのエラーはに対して保護されています
4

ジュリアはdict["a", "b"] = 1のようなものをdict[("a", "b")] = 1と解釈します。つまり、多次元のキーはタプルキーとして解釈されます。

array[1:2]の出力がタプルではなく配列であるため、問題が発生します。あなたはその後、

tup = tuple(array[1:2]...) 

でタプルに配列を変換することができますすることができます

dict2 = Dict() 
dict2[tup] = 1 

お知らせ代わりに1要素の2要素のタプルを作成するarray[1:2]をアンパックスプラットオペレータ...の使用...を使用しないときに作成されるタプル(唯一の要素は2要素配列です)。割り当てを行う際

関連する問題