Respuestas:
Esto devolverá el par clave-valor de hash máximo según el valor de los elementos hash:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
Encontré de esta manera, devuelva la clave del primer valor máximo
hash.key(hash.values.max)
Otra forma podría ser la siguiente:
hash.each { |k, v| puts k if v == hash.values.max }
Esto se ejecuta a través de cada par clave-valor y devuelve (o en este caso, pone) la (s) clave (s) donde el valor es igual al máximo de todos los valores. Esto debería devolver más de una clave si hay un empate.
Si desea recuperar más de un par clave-valor según el orden (el segundo más grande, el más pequeño, etc.), una forma más eficiente será ordenar el hash una vez y luego obtener los resultados deseados.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Clave de mayor valor
puts *hash[0][0]
Obtener máximo y mínimo
puts *hash[0], *hash[hash.length-1]
Segundo par clave-valor más grande
Hash[*hash[1]]
Para convertir la matriz hash de nuevo en un hash
hash.to_h
Esto devolverá la última clave del hash ordenada por tamaño; sin embargo, puede haber dos claves con el mismo valor.
def largest_hash_key(hash)
key = hash.sort{|a,b| a[1] <=> b[1]}.last
puts key
end
hash = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
largest_hash_key(hash)