経緯
- 一見、単純そうだが、クセがあるのでメモ。
- 手法は幾つかあるらしいが、自分のお気に入りのみメモ。
ソートするデータ例
h = { "a" => 57, "c" => 81, "b" => 49, "d" => 77 }
keyでソート
ASC
Hash[ h.sort ]
#=> { "a" => 57, "b" => 49, "c" => 81, "d" => 77 }
DESC
Hash[ h.sort.reverse ]
#=> { "d" => 77, "c" => 81, "b" => 49, "a" => 57 }
valueでソート
ASC
Hash[ h.sort_by{ |_, v| v } ]
#=> { "b" => 49, "a" => 57, "d" => 77, "c" => 81 }
DESC
Hash[ h.sort_by{ |_, v| -v } ]
#=> { "c" => 81, "d" => 77, "a" => 57, "b" => 49 }