Julia FITSio:FITS table 与 Float64 和 ASCIIString

Julia FITSio: FITS table with Float64 and ASCIIString

我是 Julia 的新手,希望我的问题不是太琐碎。 我尝试创建一个 FITS 二进制文件 table,其中包含多列 Float64 和一列 ASCIIString。如 FITSIO.jl documentation 中所述,write() 函数的输入应该是“ 带有 ASCIIString 键(给出列名)和数组值(给出要写入每一列的数据)的字典”。

但似乎字典不能容纳混合类型,我得到以下错误:

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 table,尤其是 Float64 和 ASCIIString? 这应该是可能的,因为我可以毫无问题地使用相同的 FITSIO.jl 库读取这样的 table,但是文档中的有限示例并不能说明这种情况。

谢谢!

将大括号更改为圆括号,您将创建您想要的列表。

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