2017-07-17 103 views
0

說,我這有類似元件哈希:下降哈希值排序

###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'在它應該在頂部。我不知道我還能寫什麼來實現這一目標。

+2

的值是字符串。如果要按數字順序對它們進行排序而不是按字典順序排列,請在排序之前或排序期間將它們轉換爲某種數字類型。 – Ryan

+0

@Ryan,感謝您的快速回復。那麼,我應該如何將字符串轉換爲數字? –

+0

這取決於。你的號碼有什麼樣的精度?兩位小數位,總是在0-100之間,或者......? – Ryan

回答

3

它似乎排序按字母順序。先轉換爲數字。

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

減號可避免使用reverse

+0

工作就像魅力!謝謝。 '.to_f'是我所需要的。 –