将散列值放入另一个散列中

问题描述 投票:0回答:1

好吧,我问了两个问题,并将每个用户的输入放到单独的哈希中。我正在使用循环来遍历多次,然后将所有哈希添加到数组中。我的问题是/我困在哪里,如何将每个哈希的值之和分配给它们自己的单独哈希。

这是我的代码:

arr:[]
         (1..n).each do |i|

 hash=Hash.new()

 puts "Please input a value for day # #{i}" 
 hash["day1"]=gets.chomp.to_f

 puts "Please input a value for day # #{i}" 
 hash["day2"]=gets.chomp.to_f

 arr << hash

  end 

我想这样做,因为这是我一直在使用的用于收集用户输入并将其放入哈希表的方法,但是它不起作用:/

   hash[:total]= hash.each_value.inject(:+) 

我基本上是想将每个哈希加起来,并放入一个新的哈希中。那有可能吗?这是很难的原因,我将不得不在代码块之外执行此操作,但随后系统将无法识别变量:/

ruby loops hash
1个回答
0
投票

您可以尝试使用Hash#reduceHash#merge方法

arr = []
3.times do |i|
  hash = Hash.new()
  puts "Please input a value for day # #{i}"
  hash["day1"] = gets.chomp.to_f
  puts "Please input a value for day # #{i}"
  hash["day2"] = gets.chomp.to_f
  arr << hash
end

totals = arr.reduce({}) do |sums, day|
  sums.merge(day) { |_, a, b| a + b }
end

puts totals
# {"day1"=>8.0, "day2"=>11.0}
© www.soinside.com 2019 - 2024. All rights reserved.