Written by Kasumi

Rubyでハッシュ(連想配列)のキーもしくは値でソートする方法

Rubyでハッシュ(連想配列)のキーもしくは値でソートする方法を知りたい。

本記事ではこのような悩みを解決。

実装方法について解説します。

ハッシュのキーでソートする方法

array = {"あ"=>100, "さ"=>250, "か"=>200, "な"=>50, "た"=>300}

# ソート結果
p array.sort.to_h
#{"あ"=>100, "か"=>200, "さ"=>250, "た"=>300, "な"=>50}

ハッシュのキーでソートするコード例です。

キーのあいうえお順でソートされてるのがわかります。

キーのソートにはsortメソッドto_hメソッドを組み合わせます。

使い方は以下の通りです。

ハッシュ.sort.to_h

sortメソッドだけでもソートされますが、連想配列から二次元配列に変換されてしまいます。

to_hメソッドを使う事で、ハッシュのままソートが可能になります。

ハッシュの値でソートする方法

array = {"あ"=>100, "さ"=>250, "か"=>200, "な"=>50, "た"=>300}

# ソート結果
p array.sort_by {| k, v | v}.to_h
#{"な"=>50, "あ"=>100, "か"=>200, "さ"=>250, "た"=>300}

ハッシュの値でソートするコード例です。

数値順にソートされてるのがわかります。

ハッシュの値でソートするにはsort_byメソッドを使います。

sortメソッドでも値でソートできますが、sort_byメソッドの方がコードを省略でき、且つ複雑な条件式にも対応できます。

ハッシュの値でソートするsort_byメソッドの使い方は以下の通りです。

ハッシュ.sort_by {| キー変数, 値変数 | 値変数}.to_h

sort_byメソッドのブロック内でキー変数と値変数を引数で指定。

パイプ(|)の後にソートしたい方の変数(今回の場合は値変数)を入れたらソートできます。

まとめ

ハッシュのキーもしくは値でソートする方法を紹介しました。

以上で解説を終わります。

目次

関連記事

Ruby

Rubyで変数の種類とそれぞれの有効範囲(スコープ)について

2022.08.19
1391
Ruby

Rubyでハッシュにシンボルを使う方法を解説

2022.08.07
1335
Ruby

【Ruby】同じ値で要素を満たす配列を生成する方法

2022.08.14
1935
Ruby

Rubyで配列からインデックス(index)と値を同時に取り出す方法

2022.08.10
1192