Rubyリファレンス: Home

sort (Hash)

Edit   History

Ruby 1.9

標準クラス・モジュール > Hash > sort

hash.sort

sortメソッドは、ハッシュのキーと値をソートした配列を作成して返します。ハッシュの各要素を[キー, 値]という配列にして、「配列1 <=> 配列2」の結果が-1なら配列1が先、0なら同じ、1なら配列2が先となります。

Ruby 1.9 Ruby 1.9では、Hashクラスのsortメソッドは廃止されました。ハッシュに対してsortメソッドを呼ぶと、Ruby 1.8でも1.9でも結果は同じになりますが、Ruby 1.9ではEnumerableモジュールのsortメソッドを実行します。

scores = { 'Carol' => 90, 'Alice' => 50, 'Bob' => 60, 'David' => 40 }
p scores.sort
[["Alice", 50], ["Bob", 60], ["Carol", 90], ["David", 40]]
hash.sort {|a, b| block }

sortメソッドにブロックを渡すと、<=>演算子の代わりにブロックの戻り値によってを比較します。ブロック引数abには、比較対象の[キー, 値]が入ります。ブロックの戻り値が-1ならaが先、0なら同じ、1ならbが先、となります。

次の例は、ハッシュを値が大きい順にソートします。

scores = { 'Carol' => 90, 'Alice' => 50, 'Bob' => 60, 'David' => 40 }
p scores.sort {|(k1, v1), (k2, v2)| v2 <=> v1 }
[["Carol", 90], ["Bob", 60], ["Alice", 50], ["David", 40]]

関連項目