2017-01-31 15 views
0

Учитывая хэш значение которого является всеми числовыми, я думал, что я читал в некоторых других SO этого поста было сделаноКак получить максимальное значение хэша в Ruby?

hash.max_by{|k,v| v} 

но это возвращает массив, который я не хочу. Я хочу наибольшую ценность в своем хеше.

+1

Просто сделайте 'hash.max_by {| k, v | v} .to_h'. Примечание: '# to_h' работает только для версии Ruby 2.x выше. Для Ruby 1.9 или ниже выполните: 'Hash [hash.max_by {| k, v | v}] '. – Surya

ответ

5

Я хотел бы использовать метод max на values хэша:

{a: 1, b: 2}.values.max 
1
hash.max_by(&:last).last 

делает один проход по массиву. Напротив, код @ Bustikiller делает два прохода, но я подозреваю, что он все же быстрее, чем выше.