📝
Ruby sortメソッドでハッシュを並び替える
今日は、sortメソッドを試用したハッシュの並び替え方法についてアウトプットします。
→ sortメソッドで配列を並び替える
基本構文
ハッシュ.sort
とすると、キーを基準に昇順で並び替えられた二次元配列を返します。
irb(main):001:0> h = {b:1, c:2, a:3}
=> {:b=>1, :c=>2, :a=>3}
# キー名で昇順並び替え
irb(main):002:0> h.sort
=> [[:a, 3], [:b, 1], [:c, 2]]
# 降順並び替えにする場合はreverseメソッドを使います
irb(main):003:0> h.sort.reverse
=> [[:c, 2], [:b, 1], [:a, 3]]
# 返り値をハッシュにしたい時にはto_hメソッドを併用
irb(main):007:0> h.sort.to_h
=> {:a=>3, :b=>1, :c=>2}
バリューで並び替えを行いたい時は、sortメソッド
にブロックを用いて条件を指定する事もできますが、sort_byメソッド
を使用する方がシンプルに書けます。
# バリューの昇順で並び替え
irb(main):005:0> h.sort_by {|key, val| val}
=> [[:b, 1], [:c, 2], [:a, 3]]
# 降順で並び替えるときは-valのようにマイナス記号をつければOK
irb(main):009:0> h.sort_by {|key, val| -val }
=> [[:a, 3], [:c, 2], [:b, 1]]
参考
Discussion