【问题标题】:How to add hash value inside the hash and that contain in array in Ruby?如何在散列中添加散列值并包含在Ruby中的数组中?
【发布时间】:2021-08-26 10:00:13
【问题描述】:

所以我有一个包含多个哈希的数组,例如:

[{"name"=>"a", "agg_value"=>"75.000000"}, {"name"=>"b", "agg_value"=>"25.000000"}, {"name"=>"a", "agg_value"=>"75.01000"}]

我想使用 ruby​​ 进行如下转换:

[{"name"=>"a", "agg_value"=>"150.000000"}, {"name"=>"b", "agg_value"=>"25.000000"}]

【问题讨论】:

  • "75.01000" 中的 0.01000 发生了什么?

标签: arrays ruby hash


【解决方案1】:

如果小数点不重要,您可以尝试类似的方法:

array = [{"name"=>"a", "agg_value"=>"75.000000"}, {"name"=>"b", "agg_value"=>"25.000000"}, {"name"=>"a", "agg_value"=>"75.01000"}]

array
  .group_by { |e| e['name'] }
  .map do |k, v|
    {
      'name' => k,
      'agg_value' => v.sum { |e| e['agg_value'].to_f }.to_s
    }
  end

如果您想要 6 位小数,请选择:

array
  .group_by { |e| e['name'] }
  .map do |k, v|
    {
      'name' => k,
      'agg_value' => '%.6f' % v.sum { |e| e['agg_value'].to_f }
    }
  end

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多