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のHash(連想配列)で要素を追加・更新・削除する方法

2022.07.29
43
Ruby

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

2022.08.07
22
Ruby

Rubyで文字列・配列の要素数を調べる方法【lengthメソッドを使おう】

2022.07.27
44
Ruby

Rubyでif文を使い条件分岐する方法【一行に省略する方法も紹介】

2022.08.09
14