How to sort a Ruby Hash by number value?

Posted by dustmoo on Stack Overflow See other posts from Stack Overflow or by dustmoo
Published on 2010-03-29T18:50:29Z Indexed on 2010/03/29 18:53 UTC
Read the original article Hit count: 301

Filed under:
|
|

Hi everyone,

I have a counter hash that I am trying to sort by count. The problem I am running into is that the default Hash.sort function sorts numbers like strings rather than by number size.

i.e. Given Hash:

metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }

Running this code:

metrics.sort {|a1,a2| a2[1]<=>a1[1]}

will return a sorted array:

[ 'siteb.com', 9, 'sitea.com', 745, 'sitec.com', 10]

Even though 745 is a larger number than 9, 9 will appear first in the list. When trying to show who has the top count, this is making my life difficult. :)

Any ideas on how to sort a hash (or an array even) by number value size?

I appreciate any help.

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about ruby