hashx = { key1 => {key1 => key1val1, key2 => key1val2}, key2 => {key1 => key2val1, key2 => key2val2} } If I want to insert a hash in the 1st level, how to do? key3_hash = {key1 => key3val1, key2 => key3val2} hashx[key3] = key3_hash # Is there a better way to write this? I want to assign the programmatically How about adding to the 2nd level hash? Say anon_hash = hashx[key1] anon_hash[key3] = {key3 => key1val3} hashx[key1] = anon_hash # is there a better way to do this? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Sep 18, 1:28 am, John Do <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> hashx = { key1 => {key1 => key1val1, key2 => key1val2}, key2 => {key1 => > key2val1, key2 => key2val2} } > > If I want to insert a hash in the 1st level, how to do? > > key3_hash = {key1 => key3val1, key2 => key3val2} > hashx[key3] = key3_hash > # Is there a better way to write this? I want to assign the > programmatically >Not quite sure what you''re getting at, but what''s wrong with hashx[key3] = {key1 => key3val1, key2 => key3val2} ?> How about adding to the 2nd level hash? > > Say > anon_hash = hashx[key1] > anon_hash[key3] = {key3 => key1val3} > hashx[key1] = anon_hash > # is there a better way to do this?why not just hashx[key1][key3]=key1val3 ? You don''t need all those intermediate steps. Fred> -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Sep 18, 3:08 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> why not just hashx[key1][key3]=key1val3 ? You don''t need all those > intermediate steps. > > FredMaybe he''s dealing with really large hashes - or just many operations on them - that having to reference the first sub-hash via the parent hash every time would give a significant degradation in performance. I still prefer the approach you mentioned, though. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Erol Fornoles wrote:> On Sep 18, 3:08�pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: >> why not just hashx[key1][key3]=key1val3 ? You don''t need all those >> intermediate steps. >> >> Fred > > Maybe he''s dealing with really large hashes - or just many operations > on them - that having to reference the first sub-hash via the parent > hash every time would give a significant degradation in performance. I > still prefer the approach you mentioned, though.hashx[key1][key3] = key1val3 will give an error if hashx[key1] is null. This is how I did it in perl, but ruby isn''t as forgiving. Also, I want to be able to build an arbitrarily deep hash. Say hashx[key1][key11][key111]...[key11111]. The end goal is to build a hash that I can build an YUI treeview on. So I need to build the tree, then loop through the keys to create the TreeNode. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Sep 18, 6:08 pm, John Do <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Erol Fornoles wrote: > > On Sep 18, 3:08 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > wrote: > > hashx[key1][key3] = key1val3 will give an error if hashx[key1] is null. > This is how I did it in perl, but ruby isn''t as forgiving. >hash = Hash.new {|h,k| h[k]=Hash.new &h.default_proc} Mwahahahahaha Fred> Also, I want to be able to build an arbitrarily deep hash. Say > hashx[key1][key11][key111]...[key11111]. > > The end goal is to build a hash that I can build an YUI treeview on. So > I need to build the tree, then loop through the keys to create the > TreeNode. > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---