Ответы:
Это вернет максимальную пару ключ-значение хеша в зависимости от значения хеш-элементов:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
Я нашел так, верните ключ первого максимального значения
hash.key(hash.values.max)
Другой способ мог быть следующим:
hash.each { |k, v| puts k if v == hash.values.max }
Он проходит через каждую пару «ключ-значение» и возвращает (или в данном случае помещает) ключ (и), где значение равно максимальному из всех значений. Это должно вернуть более одного ключа, если есть ничья.
Если вы хотите получить более одной пары значений ключа в зависимости от порядка (второй по величине, наименьший и т. Д.), Более эффективным способом будет один раз отсортировать хэш и затем получить желаемые результаты.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Ключ наибольшего значения
puts *hash[0][0]
Получите максимум и минимум
puts *hash[0], *hash[hash.length-1]
2-я по величине пара "ключ-значение"
Hash[*hash[1]]
Чтобы преобразовать хеш-массив обратно в хеш
hash.to_h
Это вернет последний ключ хэша, отсортированный по размеру; однако может быть два ключа с одинаковым значением.
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)