[Ruby]ハッシュ(Hash)の最大値のキーを取得するには?

Ruby

どうも、ちょげ(@chogetarou)です。

ハッシュ(Hash)の最大値のキー(Key)を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

ハッシュ(Hash)の最大値のキー(Key)を取得する方法は、2つあります。

keyメソッド

1つは、keyメソッドを使う方法です。

まず、ハッシュからkeyメソッドを呼び出します。

keyメソッドの引数で、ハッシュからvaluesメソッドを呼び出します。

そして、valuesメソッドからmaxメソッドを呼び出します。

#hash=対象のハッシュ
result = hash.key(hash.values.max)

上記のkeyメソッドは、呼び出したハッシュ(Hash)の最大値のキー(Key)を取得します。

使用例

numbers = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "ten" => 10,
    "four" => 4,
    "five" => 5,
}

result = numbers.key(numbers.values.max)

puts result
出力:
ten

max_byメソッド

もう1つは、max_byメソッドを使う方法です。

まず、ハッシュからmax_byメソッドを呼び出します。

max_byメソッドに引数を2つ持つブロックを渡します。

ブロックで第2引数をそのまま返します。

そして、max_byメソッドの結果のインデックス「0」にアクセスします。

#hash=対象のハッシュ
result = hash.max_by { |k, v| v }[0]

上記のmax_byメソッドの戻り値のインデックス「0」にアクセスすることで、呼び出したハッシュ(Hash)の最大値のキー(Key)を取得できます。

使用例

numbers = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "ten" => 10,
    "four" => 4,
    "five" => 5,
}

result = numbers.max_by { |k, v| v }[0]

puts result
出力:
ten

まとめ

ハッシュ(Hash)の最大値のキー(Key)を取得する方法は、2つあります。

  • keyメソッドを使う方法
    result = hash.key(hash.values.max)
  • max_byメソッドを使う方法
    result = hash.max_by { |k, v| v }[0]

コメント

タイトルとURLをコピーしました