Відповіді:
Це поверне макс пара хеш-ключ-значення залежно від значення хеш-елементів:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
Я знайшов таким чином повернути ключ першого значення max
hash.key(hash.values.max)
Інший спосіб може бути наступним:
hash.each { |k, v| puts k if v == hash.values.max }
Це проходить через кожну пару ключ-значення і повертає (або в цьому випадку ставить) ключ (и), де значення дорівнює максимуму всіх значень. Це має повернути більше одного ключа, якщо є нічия.
Ви можете використовувати метод select, якщо ви хочете, щоб повернулася пара ключових значень:
hash.select {|k,v| 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)