如何解决如何按数值对 Ruby 哈希进行排序?
不知道你是如何得到你的结果的,因为它不会按字符串值排序......你应该反转a1
并a2
在你的例子中
无论如何(根据 Mladen),最好的方法是:
metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }
metrics.sort_by {|_key, value| value}
# ==> [["siteb.com", 9], ["sitec.com", 10], ["sitea.com", 745]]
如果您需要一个哈希结果,您可以使用to_h
(在 Ruby 2.0+ 中)
metrics.sort_by {|_key, value| value}.to_h
# ==> {"siteb.com" => 9, "sitec.com" => 10, "sitea.com", 745}
解决方法
我有一个计数器哈希,我试图按计数排序。我遇到的问题是默认的 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 将首先出现在列表中。当试图显示谁拥有最高数量时,这让我的生活变得困难。:)
关于如何按数值大小对哈希(甚至数组)进行排序的任何想法?
我很感激任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。