Jak polaczyc dwie tablice hashow w jedna?

>> hash = { "One" => [{"Oneone" => "1", "Onetwo" => "2"}, {"Oneone" => "3", "Onetwo" => "4"}], "Two" => [{"Twoone" => "5", "Twotwo" => "6"}, {"Twoone" => "7", "Twotwo" => "8"}] } { "One" => [ [0] { "Oneone" => "1", "Onetwo" => "2" }, [1] { "Oneone" => "3", "Onetwo" => "4" } ], "Two" => [ [0] { "Twoone" => "5", "Twotwo" => "6" }, [1] { "Twoone" => "7", "Twotwo" => "8" } ] }
Chcialbym otrzymac:

{ "OneTwo" => [ [0] { "Oneone" => "1", "Onetwo" => "2", "Twoone" => "5", "Twotwo" => "6" }, [1] { "Oneone" => "3", "Onetwo" => "4", "Twoone" => "7", "Twotwo" => "8" } ] }

hash[“One”][0].merge(hash[“Two”][0]) # {“Oneone”=>“1”, “Onetwo”=>“2”, “Twoone”=>“5”, “Twotwo”=>“6”}

A jezeli mam losowa ilosc tych hashy

[0] { "Oneone" => "1", "Onetwo" => "2" } ...

Hash[hash.keys.join, hash.values.transpose.map { |hashes| hashes.inject &:merge } ]
cos takiego dziala, ale dostaje potem rozne bledy(przez transpose pewnie)

hash = { "One" => [{"Oneone" => "1", "Onetwo" => "2"}, {"Oneone" => "3", "Onetwo" => "4"}], "Two" => [{"Twoone" => "5", "Twotwo" => "6"}, {"Twoone" => "7", "Twotwo" => "8"}] } OneTwo = hash['One'].zip(hash['Two']) OneTwo.each_index do |array_index| tmpHash = Hash.new OneTwo[array_index].each { |hash| tmpHash.merge!(hash) } OneTwo[array_index] = tmpHash end

http://rubyworks.github.com/rubyfaux/?doc=http://rubyworks.github.com/facets/docs/facets-2.9.3/core.json#api-class-Hash/api-method-Hash-h-collate

collate(other)

Merge the values of this hash with those from another, setting all values to be arrays representing the values from both hashes.

{ :a=>1, :b=>2 }.collate(:a=>3, :b=>4, :c=>5)
#=> { :a=>[1,3], :b=>[2,4], :c=>[5] }