Julia の Dict(辞書) を Array や DataFrame に組み直す方法
今さらですが、Julia の Dict(辞書) を Array や DataFrame に組み直す方法です。悩んでいる人が、どの位いらっしゃるかは不明ですが...
keys() と values() に対して、collect() を使えば良いようです。
julia> dict = Dict("a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5); julia> keys(dict) Base.KeySet for a Dict{String,Int64} with 5 entries. Keys: "c" "e" "b" "a" "d" julia> keys(dict)[1] ERROR: MethodError: no method matching getindex(::Base.KeySet{String,Dict{String,Int64}}, ::Int64) Stacktrace: [1] top-level scope at none:0 julia> collect(keys(dict)) 5-element Array{String,1}: "c" "e" "b" "a" "d" julia> collect(keys(dict))[1] "c"
Array にする方法が分れば、Array だの DataFrame だのは簡単です。
julia> hcat(collect(keys(dict)), collect(values(dict))) 5×2 Array{Any,2}: "c" 3 "e" 5 "b" 2 "a" 1 "d" 4 julia> using DataFrames julia> DataFrame(key = collect(keys(dict)), value=collect(values(dict))) 5×2 DataFrame │ Row │ key │ value │ │ │ String │ Int64 │ ├─────┼────────┼───────┤ │ 1 │ c │ 3 │ │ 2 │ e │ 5 │ │ 3 │ b │ 2 │ │ 4 │ a │ 1 │ │ 5 │ d │ 4 │
なお、逆さ方向の 2つの長さが等しい Array から、Dict を作る方法は、こちら です。
おしまい。