2017-07-17 6 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

@ライアン、すばやい返信をありがとう。では、文字列を数値に変換する方法は? –

+0

それは依存します。あなたの数字にはどんな精度がありますか?小数点以下2桁、常に0〜100、または...? – Ryan

答えて

3

アルファベット順に並べ替えられているようです最初に数値に変換します。

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

マイナス記号は、値が文字列であるreverse

+0

チャームのように働いた!ありがとう。 '.to_f'は私が必要としたものです。 –

関連する問題