2016-08-26 3 views
1

私はJuliaを初めて使っています。私の質問はそれほど些細なことではないと思います。 私は、Float64のさまざまな列とASCIIStringの1つの列を含むFITSバイナリテーブルを作成しようとしています。 FITSIO.jl documentationで説明したように、write()関数への入力は、ASCIIStringキー(列名を与える)とArray値(各列に書き込むデータを与える)を持つ辞書 "でなければなりません。Julia FITSio:Float64とASCIIStringを使ったFITSテーブル

が、辞書混合型を保持することはできません、と私は次のエラーを取得するようだ:

data=Dict{"col1"=>[1.0,2.0,3.0], "col2"=>[4.0,5.0,6.0],"col3"=>["toto","tata","titi"]} 
LoadError: TypeError: Dict: in parameter, expected Type{T}, got Pair{ASCIIString,Array{Float64,1}} while loading In[408], in expression starting on line 1 

は、誰もが混合型のカラムを含むFITSのテーブルを作成する方法を知っているし、特にのfloat64とASCIIStringでいます? 同じFITSIO.jlライブラリでこのようなテーブルを問題なく読めるので、可能なはずですが、ドキュメントの限られた例ではこのような場合が間違っていません。

ありがとうございました!

+1

v5.5では、「ASCIIString」は非推奨となっているので、新しいコードを書く場合は、このタイプを避けてください。 –

答えて

2

中カッコをカッコに変更すると、目的のリストが作成されます。

data=Dict("col1"=>[1.,2.,3.], "col2"=>[4.,5.,6.], "col3"=>["toto","tata","titi"]) 

あなたは、本質的にペアのシーケンスを使用してDictタイプのコンストラクタを呼び出しています。



追加情報:
中括弧は完全に何か他のものです。これは、辞書のキーと値を特定の型にする(または可能であれば変換する)ことを指定するためのものです。例えば

julia> Dict{String,Array{Float64,1}}("a"=>[1.,2.,3.], "b"=>[4.,5.,6.]) 
Dict{String,Array{Float64,1}} with 2 entries: 
    "b" => [4.0,5.0,6.0] 
    "a" => [1.0,2.0,3.0] 

julia> Dict{String,Array{Float64,1}}("a"=>[1.,2.,3.], "b"=>['a','b','c']) 
Dict{String,Array{Float64,1}} with 2 entries: 
    "b" => [97.0,98.0,99.0] 
    "a" => [1.0,2.0,3.0] 

julia> Dict{String,Array{Float64,1}}("a"=>[1.,2.,3.], "b"=>["a","b","c"]) 
ERROR: MethodError: Cannot `convert` an object of type String to an object of type Float64 
+0

すごいよ、私はもっと慎重にすべきだった! もう別の問題があります。既存の辞書にString列を追加しようとすると、再び破棄されます。 data = Dict( "col1" => [1.、2.、3.。]、 "col2" => [4.、5.、 ]]) データ["col3"] = ["toto"、 "tata"、 "titi"] タイプについて不満がありますか?ありがとうございました! – HBouy

+0

最初の2つのペアのみで初期化すると、juliaは、この辞書がString/Array-of-floatのペアを取ることを推論します(つまり、 'Dict {String、Array {Float64、1}}' juliaを作るためにfloatと同時に(String => String)のペアを追加するか、できない場合は 'Any'、*または*型の配列です(例えば' data (例えば 'data = Dict {String、Array {Any、1}}(<対のシーケンス>)を初期化時に明示的にする') –

+0

完璧です、それはありますか?もう一度ありがとうございます – HBouy

関連する問題