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

おしまい。

B! LINE