如何合并散列哈希

时间:2016-01-25 16:59:36

标签: ruby

我有两个哈希。如何将这两者合并为一个哈希?

hash_one = {3=>{"pre_event_sales_count"=>-12}}
hash_two = {3=>{"sold_count"=>-12}}

我希望它看起来像这样:

{3 => {"sold_count"=>-12, "pre_event_sales_count"=>-12}}

3 个答案:

答案 0 :(得分:1)

遍历第一个哈希的所有键,如果第二个哈希中存在键,则将其合并到第一个哈希:

hash_one.keys.each{ |k| hash_one[k].merge!(hash_two[k]) if hash_two[k] }

现在hash_one是:{3=>{"pre_event_sales_count"=>-12, "sold_count"=>-12}}

顺便说一句,最好使用符号而不是字符串来表示哈希键。

答案 1 :(得分:0)

使用深度合并

require "active_support/core_ext/hash"
hash_one.deep_merge(hash_two)

答案 2 :(得分:0)

hash_one.merge!(hash_two)

hash_two放入hash_one并覆盖任何重复项。