在ruby中合并一些复杂的哈希值

Sar*_*wan 3 ruby hash hash-of-hashes

我想将以下哈希合并在一起.

 h1 = {"201201" => {:received => 2},   "201202" => {:received => 4 }}
 h2 = {"201201" => {:closed => 1},  "201202" => {:closed => 1 }}
Run Code Online (Sandbox Code Playgroud)

特别是,我的预期结果是:

h1 = {"201201" => {:received => 2, :closed => 1},  "201202" => {:received => 4, :closed => 1 }}
Run Code Online (Sandbox Code Playgroud)

我尝试过各种方式:

h = h1.merge(h2){|key, first, second| {first , second} }
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎对我来说都没有好处.任何建议都会非常感激.

Hck*_*Hck 6

这应该适合你:

h = h1.merge(h2){|key, first, second| first.merge(second)}
Run Code Online (Sandbox Code Playgroud)

  • 啊,[`Hash#merge`](http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-merge)的块形式是如此美妙. (2认同)
  • 如果你想要递归合并:`m = - >(k,a,b){a.merge(b,&m)}; h = m [nil,h1,h2]` (2认同)