首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求和索引散列的子值。

求和索引散列的子值。
EN

Stack Overflow用户
提问于 2016-12-23 13:30:40
回答 1查看 41关注 0票数 0

因此,我正在进行一个项目,其中有一个散列,如下所示:

代码语言:javascript
复制
{ 1=>{:id=>133, 
     :total=>#<BigDecimal:cc08558,'0.41323E3',18(18)>}, 
  2=>{:id=>134, 
      :total=>#<BigDecimal:cc082b0,'0.523E1',18(18)>}, 
  6=>{:id=>166, 
      :total=>#<BigDecimal:cbdbb98,'0.837E2',18(18)>}, 
  8=>{:id=>168, 
      :total=>#<BigDecimal:cbdb8a0,'0.72236E3',18(18)>}, 
  9=>{:id=>169, 
      :total=>#<BigDecimal:cbdb738,'0.132E3',9(18)>} }

我想将元素添加到这个散列中,它包含哈希中所有值的总和。其结果如下:

代码语言:javascript
复制
{ 1=>{:id=>133, 
     :total=>#<BigDecimal:cc08558,'0.41323E3',18(18)>}, 
  2=>{:id=>134, 
      :total=>#<BigDecimal:cc082b0,'0.523E1',18(18)>}, 
  6=>{:id=>166, 
      :total=>#<BigDecimal:cbdbb98,'0.837E2',18(18)>}, 
  8=>{:id=>168, 
      :total=>#<BigDecimal:cbdb8a0,'0.72236E3',18(18)>}, 
  9=>{:id=>169, 
      :total=>#<BigDecimal:cbdb738,'0.132E3',9(18)>},
  0=>{:id=>000,
      :total=><whatever the total is>} }

但我在做这件事时遇到了一些困难

代码语言:javascript
复制
month_hash.each.sum(:total)

但这似乎不是我想做的。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-23 13:38:09

您可以使用values获取所有子散列,并使用inject迭代散列并对总计进行求和:

代码语言:javascript
复制
sum = h.values.inject(0){|sum,h| sum + h[:total] }
h[0] = {:id => 0, :total => sum}

h现在是:

代码语言:javascript
复制
{1=>{:id=>133, :total=>413.23},
 2=>{:id=>134, :total=>5.23},
 6=>{:id=>166, :total=>83.7},
 8=>{:id=>168, :total=>722.36},
 9=>{:id=>169, :total=>132.0},
 0=>{:id=>0, :total=>1356.52}}

请注意,如果您再次运行它,您将添加两次sum:

代码语言:javascript
复制
{1=>{:id=>133, :total=>413.23},
 2=>{:id=>134, :total=>5.23},
 6=>{:id=>166, :total=>83.7},
 8=>{:id=>168, :total=>722.36},
 9=>{:id=>169, :total=>132.0},
 0=>{:id=>0, :total=>2713.04}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41302394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档