Tengo un contador de hash que intento ordenar por conteo. El problema al que me estoy enfrentando es que la función predeterminada Hash.sort ordena números como cadenas en lugar de por tamaño de número.¿Cómo ordenar un Ruby Hash por valor numérico?
es decir Hash Dado:
metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }
La ejecución de este código:
metrics.sort {|a1,a2| a2[1]<=>a1[1]}
devolverá una matriz ordenada:
[ 'siteb.com', 9, 'sitea.com', 745, 'sitec.com', 10]
A pesar de que 745 es un número mayor que 9, 9 aparecerá primero en la lista. Cuando trato de mostrar quién tiene el conteo más alto, esto me está haciendo la vida difícil. :)
¿Alguna idea sobre cómo ordenar un hash (o incluso un array) por tamaño de valor?
Agradezco cualquier ayuda.
qué versión rubí utiliza? el resultado de su clasificación es muy extraño – fl00r