Ruby 在散列集合中聚合选择性值

传奇

我有一个哈希数组,键是国家,值是天数。

我想汇总哈希值并对相同国家/地区的值求和。

数组可能看起来像这样 countries = [{"Country"=>"Brazil", "Duration"=>731/1 days}, {"Country"=>"Brazil", "Duration"=>365/1 days}]

我希望这能返回以下内容: [{"Country" => "Brazil", "Duration"=>1096/1 days}]

像这样尝试了其他关于 SO 的问题

countries.inject{|new_h, old_h| new_h.merge(old_h) {|_, old_v, new_v| old_v + new_v}}

生产 {"Country"=>"BrazilBrazil", "Duration"=>1096/1 days}

有没有办法选择性地只合并特定的值?

隐喻

您可以按如下方式更新您的代码:

countries.inject do |new_h, old_h| 
    new_h.merge(old_h) do |k, old_v, new_v|
        if k=="Country" then old_v else old_v + new_v end
    end 
end
#  => {"Country"=>"Brazil", "Duration"=>1096} 

您基本上使用k(for key ) 参数在不同的合并策略之间切换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章