我正在尝试在ruby中实现一个逻辑来合并n维哈希。如果它们有相同的密钥,我会寻找它们的值的和
我有一个方法,它在每次迭代时返回一个像这样的哈希:
迭代1 { a: { count: 1, b: { count: 2 } } }
迭代2 { a: { count: 3, b: { count: 5, c: { count: 7 } } } }
迭代3 { a: { count: 3, b: { count: 2 } } }
当我合并每次迭代时,结果是{:a=>{:count=>3, :b=>{:count=>2}}}
实际上我需要count
值的总和:{ a: { count: 7, b: { count: 9, c: { count: 7 } } } }
我试过merge
与块,但它不适合我。
你知道吗?
3条答案
按热度按时间xjreopfe1#
我有一个方法,它在每次迭代时返回一个像这样的哈希:[...]
让我们使用这个来进行演示:
我正在尝试在ruby中实现一个逻辑来合并n维哈希。
Rails已经提供了
deep_merge!
来实现:如果它们有相同的密钥,我会寻找它们的值的和
默认情况下,它将 * 覆盖 * 现有值。要将每个新值与现有值相加,可以向
deep_merge!
传递一个块:(就像你可以使用Ruby的内置merge!
一样)baubqpgj2#
输入
编码
输出
6qftjkof3#
@Stefan是完全正确的,既然你有Rails,你应该使用他们的答案。
如果你需要一个只使用Ruby的解决方案,我做了这个。可以优化。