我有一个哈希数组,键是国家,值是天数。
我想汇总哈希值并对相同国家/地区的值求和。
数组可能看起来像这样 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] 删除。
我来说两句