以下の内容はhttps://simanman.hatenablog.com/entry/2013/12/21/210622より取得しました。


RubyでHashのsortの返り値をHashにする

RubyのHashのsortは返り値がArrayになっています。

hash = { a: 30, b: 66, c: 45, d: 100, e: 80 }

p hash.sort_by{|k,v| v }
[[:a, 30], [:c, 45], [:b, 66], [:e, 80], [:d, 100]]

ArrayではなくHashで受け取りたい場合は、この値をそのままHashに入れてあげれば大丈夫です。

hash = { a: 30, b: 66, c: 45, d: 100, e: 80 }

result = hash.sort_by{|k,v| v }

p result

sorted_hash = Hash[result]

p sorted_hash
[[:a, 30], [:c, 45], [:b, 66], [:e, 80], [:d, 100]]
{:a=>30, :c=>45, :b=>66, :e=>80, :d=>100}

追記 ( 2014/1/10 )

Ruby2.1からはArrayに対してto_hが使用できるようになったので、上記のようにHashに渡すのではなくto_hでハッシュに戻すことが出来るようになりました。

hash = { a: 30, b: 66, c: 45, d: 100, e: 80 }

p hash.sort_by{|k,v| v }.to_h
{:a=>30, :c=>45, :b=>66, :e=>80, :d=>100}



以上の内容はhttps://simanman.hatenablog.com/entry/2013/12/21/210622より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14