我有一个计数器哈希,尝试按计数排序。我遇到的问题是默认的Hash.sort函数对数字(如字符串)进行排序,而不是按数字大小进行排序。
即给定哈希:
metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }
运行此代码:
metrics.sort {|a1,a2| a2[1]<=>a1[1]}
将返回一个排序数组:
[ 'siteb.com', 9, 'sitea.com', 745, 'sitec.com', 10]
即使745大于9,9仍将出现在列表的第一位。当试图显示谁拥有最高职位时,这使我的生活变得困难。:)
关于如何通过数字值大小对哈希(甚至是数组)进行排序的任何想法?
感谢您的帮助。
您使用什么红宝石版本?您的排序结果非常奇怪
—
fl00r 2010年