在Ruby中的哈希数组中求和

东边发展

我有以下散列数组:

books = [
  {'author' => 'John Doe', 'month' => 'June', 'sales' => 500},
  {'author' => 'George Doe', 'month' => 'June', 'sales' => 600},
  {'author' => 'John Doe', 'month' => 'July', 'sales' => 700},
  {'author' => 'George Doe', 'month' => 'July', 'sales' => 800}
]

在此基础上,如何获得具有以下内容的数组:

[
  {'author' => 'John Doe', 'total_sales' => 1200},
  {'author' => 'George Doe', 'total_sales' => 1400}
]
卡里·斯沃夫兰

您可以使用Hash#update(aka merge!的形式,该形式采用一个块来确定要合并的两个哈希中存在的键的值:

books.each_with_object({}) do |g,h|
  h.update(g['author']=>g['sales']) { |_,o,n| o+n }
end.map { |k,v| { 'author'=>k, 'total_sales'=>v } } 
  #=> [{"author"=>"John Doe", "total_sales"=>1200},
  #    {"author"=>"George Doe", "total_sales"=>1400}] 

有关块变量的说明,请参见文档_o以及n(我使用_了公共密钥,主要是向读者传达信号,它没有在块计算中使用,这是一种常见的Ruby约定。)

考虑在构建散列之后停止:

books.each_with_object({}) do |g,h|
  h.update(g['author']=>g['sales']) { |_,o,n| o+n }
end
  #=> {"John Doe"=>1200, "George Doe"=>1400}  

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby中的数组哈希

来自分类Dev

Ruby中的数组哈希

来自分类Dev

在Ruby中的哈希中求和某些值

来自分类Dev

从Ruby中的哈希数组中删除哈希

来自分类Dev

从Ruby中的数组创建哈希

来自分类Dev

比较 Ruby 中的哈希数组

来自分类Dev

从Ruby中的哈希数组删除哈希

来自分类Dev

如何在Ruby中使用相同的键对数组哈希中的值求和

来自分类Dev

仅对数组中的整数求和(Ruby)

来自分类Dev

使用数组中的键遍历哈希,并将结果求和

来自分类Dev

如何对具有不同哈希值的数组中的值求和

来自分类Dev

在Ruby中对哈希数组进行排序

来自分类Dev

遍历数组以在Ruby中构造哈希

来自分类Dev

在Ruby中对哈希数组进行排序

来自分类Dev

从Ruby中的用户输入创建哈希数组

来自分类Dev

Ruby-在哈希中输出数组的元素

来自分类Dev

在Ruby,哈希与数组中效率更高

来自分类Dev

从Ruby哈希数组中获取值

来自分类Dev

ruby 在哈希数组中查找值

来自分类Dev

哈希数组中的哈希

来自分类Dev

Ruby修改并在哈希数组中添加哈希值

来自分类Dev

如何从Ruby中的哈希数组更改哈希键?

来自分类Dev

如何在Ruby中从数组的哈希值的哈希值构建哈希值的哈希值

来自分类Dev

从Ruby中的嵌套哈希数组中搜索键值

来自分类Dev

从Ruby中的键数组的哈希值中获取值的方法

来自分类Dev

根据Ruby中的键从数组中删除哈希

来自分类Dev

从Ruby中的键数组的哈希值中获取值的方法

来自分类Dev

从Yaml中的Ruby哈希数组中删除元素的最佳方法

来自分类Dev

如何在 Ruby 中访问哈希中的数组元素