Edited at

Ruby - Hashをkey|valueでASC|DESCソート

More than 3 years have passed since last update.


経緯


  • 一見、単純そうだが、クセがあるのでメモ。

  • 手法は幾つかあるらしいが、自分のお気に入りのみメモ。


ソートするデータ例

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 }


資料