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.08
418
Ruby

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

2022.08.14
572
Ruby

Rubyでクラスの呼び出し時、必ず実行する処理(初期化)を設定する方法【initializeメソッド】

2022.08.16
243
Ruby

Rubyで親クラスを継承した子クラスを作成する方法

2022.08.17
598