# How to create hash of hash?

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

Say
anon_hash = hashx[key1]
anon_hash[key3] = {key3 => key1val3}
hashx[key1] = anon_hash

# is there a better way to do this?

On Sep 18, 1:28 am, John Do [email protected] 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} ?

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

On Sep 18, 3:08 pm, Frederick C. [email protected]
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.

On Sep 18, 6:08 pm, John Do [email protected] wrote:

Erol F. wrote:

On Sep 18, 3:08 pm, Frederick C. [email protected]
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

Erol F. wrote:

On Sep 18, 3:08ï¿½pm, Frederick C. [email protected]
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.