Ruby automatically sorts hashes by keys, which means:
h = {"first"=>2,"second"=>1,"third"=>3}
=> {"third"=>3, "second"=>1, "first"=>2}
How do I sort this by the values? So that I have:
{"second"=>1, "first"=>2, "third"=>3}
Ruby automatically sorts hashes by keys, which means:
h = {"first"=>2,"second"=>1,"third"=>3}
=> {"third"=>3, "second"=>1, "first"=>2}
How do I sort this by the values? So that I have:
{"second"=>1, "first"=>2, "third"=>3}
Subbu wrote:
Ruby automatically sorts hashes by keys, which means:
h = {"first"=>2,"second"=>1,"third"=>3}
=> {"third"=>3, "second"=>1, "first"=>2}
How do I sort this by the values? So that I have:
{"second"=>1, "first"=>2, "third"=>3}
-------------> class Hash - RDoc Documentation
hsh.sort => array
hsh.sort {| a, b | block } => array
Converts hsh to a nested array of [ key, value ] arrays and sorts it,
using Array#sort.
h = { "a" => 20, "b" => 30, "c" => 10 }
h.sort #=> [["a", 20], ["b", 30], ["c", 10]]
h.sort {|a,b| a[1]<=>b[1]} #=> [["c", 10], ["a", 20], ["b", 30]]
--
Posted via http://www.ruby-forum.com/\.
A hash, by nature, is not really sorted IIRC. If you sort, you need
an Array object as a return value, which means using #sort_by...
h = Hash["first", 2, "second", 1, "third", 3]
h.sort_by {|k, v| v}
It will give you an array of arrays.
Todd
On Mon, Mar 10, 2008 at 11:34 AM, Subbu <subramani.athikunte@gmail.com> wrote:
Ruby automatically sorts hashes by keys, which means:
>> h = {"first"=>2,"second"=>1,"third"=>3}
=> {"third"=>3, "second"=>1, "first"=>2}How do I sort this by the values? So that I have:
{"second"=>1, "first"=>2, "third"=>3}
and with #sort_by
irb(main):001:0> {"first"=>2,"second"=>1,"third"=>3}.sort_by {|k,v| v}
=> [["second", 1], ["first", 2], ["third", 3]]
Kind regards
robert
2008/3/10, Rodrigo Bermejo <rodrigo.bermejo@ps.ge.com>:
Subbu wrote:
> Ruby automatically sorts hashes by keys, which means:
>
>>> h = {"first"=>2,"second"=>1,"third"=>3}
> => {"third"=>3, "second"=>1, "first"=>2}
>
> How do I sort this by the values? So that I have:
> {"second"=>1, "first"=>2, "third"=>3}-------------> http://www.ruby-doc.org/core/classes/Hash.html
hsh.sort => array
hsh.sort {| a, b | block } => arrayConverts hsh to a nested array of [ key, value ] arrays and sorts it,
using Array#sort.h = { "a" => 20, "b" => 30, "c" => 10 }
h.sort #=> [["a", 20], ["b", 30], ["c", 10]]
h.sort {|a,b| a[1]<=>b[1]} #=> [["c", 10], ["a", 20], ["b", 30]]
--
use.inject do |as, often| as.you_can - without end
Thanks so much guys.
On Mar 10, 10:48 am, Todd Benson <caduce...@gmail.com> wrote:
On Mon, Mar 10, 2008 at 11:34 AM, Subbu <subramani.athiku...@gmail.com> wrote:
> Ruby automatically sorts hashes by keys, which means:> >> h = {"first"=>2,"second"=>1,"third"=>3}
> => {"third"=>3, "second"=>1, "first"=>2}> How do I sort this by the values? So that I have:
> {"second"=>1, "first"=>2, "third"=>3}A hash, by nature, is not really sorted IIRC. If you sort, you need
an Array object as a return value, which means using #sort_by...h = Hash["first", 2, "second", 1, "third", 3]
h.sort_by {|k, v| v}It will give you an array of arrays.
Todd