对哈希值进行降序排序

时间:2017-07-17 08:29:48

标签: ruby

说,我有一个哈希,其中包含以下元素:

###EVNT-66  => 8.40, 
###EVNT-108 => 9.11,
###EVNT-345 => 88.22,
###EVNT-143 => 1.26

我想根据哈希值按降序对它们进行排序。所以,我写了这个:

h.sort_by {|_key, value| value}.reverse

令人惊讶的是,我以这种方式得到了结果:

###EVNT-108 => 9.11,
###EVNT-66  => 88.22,
###EVNT-345 => 8.40,
###EVNT-143 => 1.26

这是错误的。其中带有“88”的行应位于顶部。我不确定我还能写什么来实现这一点。

1 个答案:

答案 0 :(得分:3)

它似乎按字母顺序排序 。首先转换为数字。

h.sort_by {|_key, value| -value.to_f}

减号可以避免使用reverse

相关问题