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

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ハッシュの値でソートする簡単な方法が分かりました。
以下、ハッシュを作って、身長の大きい順、低い順に並べ替える。

スポンサーリンク

hash = {
    "Takasi" => 175,
    "Youko" => 162,
    "Konta" => 183,
    "Fumiko" => 157
}
 
puts "---昇順"
hash.sort{|a, b|
    a[1] <=> b[1]
}.each{|name, value|
    puts "#{name}'s is #{value} cm"
}
 
puts "---降順"
hash.sort{|a, b|
    b[1] <=> a[1]
}.each{|name, value|
    puts "#{name}'s is #{value} cm"
}

実行結果。

---昇順
Fumiko's is 157 cm
Youko's is 162 cm
Takasi's is 175 cm
Konta's is 183 cm
---降順
Konta's is 183 cm
Takasi's is 175 cm
Youko's is 162 cm
Fumiko's is 157 cm

ポイントは、「a[1] <=> b[1]」の部分。
ただの配列の場合、「a <=> b」で良いのですけど、ハッシュにsortメソッドを使う場合は、それぞれの値(a, b)が[key, value]として取り出される。
よって、a[1], b[1]を比べれば、ハッシュの値でソートできるという仕組み。

スポンサーリンク
 
スポンサーリンク