Hash、Arrayでソート

Ruby2.0.0p-0
たまにすごく使うのでメモ。
sort_byはブロックに与えられた値でソートするっぽい。ベンリー。

Hash

hash = {"宗教"=>5, "墓石"=>1, "お骨"=>4, "お寺"=>3, "施設"=>1, "檀家"=>1}
キーでソート
hash.sort_by{ |key, value| key }
# => [["お寺", 3], ["お骨", 4], ["墓石", 1], ["宗教", 5], ["施設", 1], ["檀家", 1]]
ヴァリューでソート
hash.sort_by{ |key, value| value }
# => [["檀家", 1], ["墓石", 1], ["施設", 1], ["お寺", 3], ["お骨", 4], ["宗教", 5]]

Array

array = [["お寺", 3], ["お骨", 4], ["墓石", 1], ["宗教", 5], ["施設", 1], ["檀家", 1]]
任意の要素でソート
array.sort_by{ |v| v[1] }
# => [["檀家", 1], ["施設", 1], ["墓石", 1], ["お寺", 3], ["お骨", 4], ["宗教", 5]]

この逆順が欲しい場合は、reverseメソッドを使えばよいのでしょうか。

array.sort_by{ |v| v[1] }.reverse
# =>  [["宗教", 5], ["お骨", 4], ["お寺", 3], ["墓石", 1], ["施設", 1], ["檀家", 1]]