Forum: Ruby on Rails Hash Sorting

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3548d30217e9921c410db19ce8ce38d0?d=identicon&s=25 Sunny Bogawat (sunny_bogawat)
on 2008-12-26 08:32
Hi,

My hash contain key as a combination of album date created_at and
album_id and values are some photo object.and i need to sort this hash
based on key; but i need to sort it also considering date created_at.
 but if i consider a key as combination of both (date creataed and
album_id) then it is not pure date. how i solve it? any better solution
36aef9956c6082f69622dd67e8da376f?d=identicon&s=25 Joshua Abbott (joshnabbott)
on 2008-12-26 08:49
Would you mind posting an example of the hash and an example of how you
would like it sorted?

Thanks,
Josh
http://iammrjoshua.com

Sunny Bogawat wrote:
> Hi,
>
> My hash contain key as a combination of album date created_at and
> album_id and values are some photo object.and i need to sort this hash
> based on key; but i need to sort it also considering date created_at.
>  but if i consider a key as combination of both (date creataed and
> album_id) then it is not pure date. how i solve it? any better solution
3548d30217e9921c410db19ce8ce38d0?d=identicon&s=25 Sunny Bogawat (sunny_bogawat)
on 2008-12-26 09:00
Joshua Abbott wrote:
> Would you mind posting an example of the hash and an example of how you
> would like it sorted?
>
> Thanks,
> Josh
> http://iammrjoshua.com


say i have album id 233 and created date 12/09/2008 so my key should be
12092008_233 in this way?
5170ca260dbd2cdfd5a887a4dba7636f?d=identicon&s=25 Jeremy Weiskotten (jeremy_weiskotten)
on 2008-12-27 17:18
Sunny Bogawat wrote:
> Joshua Abbott wrote:
>> Would you mind posting an example of the hash and an example of how you
>> would like it sorted?
>>
>> Thanks,
>> Josh
>> http://iammrjoshua.com
>
>
> say i have album id 233 and created date 12/09/2008 so my key should be
> 12092008_233 in this way?

Instead of concatenating a string, just make your key an array of the
values.

hash = {}
key = [date, album_id]
hash[key] = value

However, hashes are not sorted in Ruby 1.8. Rails 2.x has an OrderedHash
that maintains the keys' nsertion order, but it's not efficient for
lookup by key. If you only plan to use the hash for iteration, that's
probably OK (but then why use a hash?).
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-27 17:22
(Received via mailing list)
On Dec 27, 4:18 pm, Jeremy Weiskotten <rails-mailing-l...@andreas-
s.net> wrote:
> hash = {}
> key = [date, album_id]
> hash[key] = value
>
> However, hashes are not sorted in Ruby 1.8. Rails 2.x has an OrderedHash
> that maintains the keys' nsertion order, but it's not efficient for
> lookup by key. If you only plan to use the hash for iteration, that's

OrderedHash is a lot speedier in 2.3

Fred
5170ca260dbd2cdfd5a887a4dba7636f?d=identicon&s=25 Jeremy Weiskotten (jeremy_weiskotten)
on 2008-12-27 17:28
Frederick Cheung wrote:
> On Dec 27, 4:18�pm, Jeremy Weiskotten <rails-mailing-l...@andreas-
> s.net> wrote:
>> hash = {}
>> key = [date, album_id]
>> hash[key] = value
>>
>> However, hashes are not sorted in Ruby 1.8. Rails 2.x has an OrderedHash
>> that maintains the keys' nsertion order, but it's not efficient for
>> lookup by key. If you only plan to use the hash for iteration, that's
>
> OrderedHash is a lot speedier in 2.3
>
> Fred

Good to know, although I'm not even on 2.2 yet due to plugin
incompatibilities. Thanks!
A82ba1167f4d4a8d1de63820e576a87f?d=identicon&s=25 Robby Russell (Guest)
on 2008-12-28 17:34
(Received via mailing list)
On Sat, Dec 27, 2008 at 8:28 AM, Jeremy Weiskotten
<rails-mailing-list@andreas-s.net> wrote:
>>> lookup by key. If you only plan to use the hash for iteration, that's
>>
>> OrderedHash is a lot speedier in 2.3
>>
>> Fred
>
> Good to know, although I'm not even on 2.2 yet due to plugin
> incompatibilities. Thanks!
>

Jeremy,

I apologize if this was already considered, but you  *can* sort a hash
by a key/value, but it's not inherently sorted for you.

*
http://www.oreillynet.com/ruby/blog/2005/12/sortin...

Good luck!

Cheers,
Robby

--
Robby Russell
Chief Evangelist, Partner

PLANET ARGON, LLC
design // development // hosting

http://www.planetargon.com/
http://www.robbyonrails.com/
aim: planetargon

+1 503 445 2457
+1 877 55 ARGON [toll free]
+1 815 642 4068 [fax]
This topic is locked and can not be replied to.