dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

rubyのhashでmax

2011-04-10 23:32:45 | ruby
rubyのhashで、値の最大値を取得する方法です。

$ irb
irb(main):001:0> h = { 'a' => 10, 'b' => 100, 'c' => 50 }
=> {"a"=>10, "b"=>100, "c"=>50}

irb(main):002:0> h.max { |a, b| a[1] <=> b[1] }
=> ["b", 100]

値が最大のキーと値のペアの配列が取得できます。
配列ですので、以下のようにすれば、キーまたは値だけを取得することもできます。

irb(main):003:0> (h.max { |a, b| a[1] <=> b[1] })[0]
=> "b"

irb(main):004:0> (h.max { |a, b| a[1] <=> b[1] })[1]
=> 100

ちなみに、キーの最大値を取得するなら、以下のようにします。
irb(main):005:0> h.max { |a, b| a[0] <=> b[0] }
=> ["c", 50]