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 を作る方法は、こちら です。
おしまい。