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
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