说,我有一个哈希,其中包含以下元素:
###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”的行应位于顶部。我不确定我还能写什么来实现这一点。
答案 0 :(得分:3)
它似乎按字母顺序排序 。首先转换为数字。
h.sort_by {|_key, value| -value.to_f}
减号可以避免使用reverse