gpt4 book ai didi

ruby - 如何按数值对 Ruby 哈希进行排序?

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:59 24 4
gpt4 key购买 nike

我有一个计数器哈希,我正试图按计数对其进行排序。我遇到的问题是默认的 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 将首先出现在列表中。当试图显示谁拥有最多时,这让我的生活变得困难。 :)

关于如何按数值大小对散列(甚至数组)进行排序有什么想法吗?

感谢任何帮助。

最佳答案

不知道你是如何得到结果的,因为它不会按字符串值排序......你应该在你的例子中反转 a1a2

在任何情况下(根据 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}

关于ruby - 如何按数值对 Ruby 哈希进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com