我是朱莉娅的新手,我希望我的问题不是太微不足道。 我尝试创建一个FITS二进制表,其中包括各种Float64列和一列ASCIIString。正如FITSIO.jl documentation中所解释的,write()函数的输入应该是" 带有ASCIIString键的字典(给出列名)和Array值(给每个列写入数据) &#34 ;.
但似乎字典无法容纳混合类型,我收到以下错误:
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库的这样的表,但是文档中的有限示例并没有说明这种情况。
谢谢!
答案 0 :(得分:2)
将大括号更改为括号,然后您将创建您想要的列表。
data=Dict("col1"=>[1.,2.,3.], "col2"=>[4.,5.,6.], "col3"=>["toto","tata","titi"])
您实际上是使用一系列对调用Dict
类型的构造函数。
额外信息:
大括号完全是另一回事。用于指定字典键和值应该是特定类型(或者如果可能的话,转换为特定类型)。 e.g。
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