hash.each {|k, v| puts k if v == hash.values.max }
Он проходит через каждую пару «ключ-значение» и возвращает (или в данном случае помещает) ключ (и), где значение равно максимальному из всех значений. Это должно вернуть более одного ключа, если есть ничья.
Если вы хотите получить более одной пары значений ключа в зависимости от порядка (второй по величине, наименьший и т. Д.), Более эффективным способом будет один раз отсортировать хэш и затем получить желаемые результаты.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Ответы:
Это вернет максимальную пару ключ-значение хеша в зависимости от значения хеш-элементов:
источник
Я нашел так, верните ключ первого максимального значения
источник
Другой способ мог быть следующим:
Он проходит через каждую пару «ключ-значение» и возвращает (или в данном случае помещает) ключ (и), где значение равно максимальному из всех значений. Это должно вернуть более одного ключа, если есть ничья.
источник
Вы можете использовать метод select, если хотите, чтобы возвращалась пара значений ключа:
источник
Если вы хотите получить более одной пары значений ключа в зависимости от порядка (второй по величине, наименьший и т. Д.), Более эффективным способом будет один раз отсортировать хэш и затем получить желаемые результаты.
Ключ наибольшего значения
Получите максимум и минимум
2-я по величине пара "ключ-значение"
Чтобы преобразовать хеш-массив обратно в хеш
источник
Я сделал это сегодня по аналогичной проблеме и в итоге получил следующее:
Для Ruby менее 2.3 вы можете заменить
&.last
на..try(:last)
Любой из них - это просто гарантия, если ваш исходный хеш пуст:{}
источник
Это вернет последний ключ хэша, отсортированный по размеру; однако может быть два ключа с одинаковым значением.
источник