|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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} |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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 } => 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/. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 } => 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]] 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 -- use.inject do |as, often| as.you_can - without end |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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} 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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
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 Thanks so much guys. |
|
![]() |
| Outils de la discussion | |
|
|