Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Ruby中的散列创建平均数组_Ruby - Fatal编程技术网

从Ruby中的散列创建平均数组

从Ruby中的散列创建平均数组,ruby,Ruby,所以我有一个如下的散列: 等级散列={比尔:[100,95,92],弗兰克:[67,73,84]} 我想找出比尔和弗兰克的平均值 我知道如果我做了以下事情: def average (grade_hash) grade_hash.transform_values{|num| num.reduce(:+)/num.size} end 然后我可以拿出比尔或弗兰克斯的平均值 我如何从所有值(比尔和弗兰克的总和)中得出平均值 我尝试在最后对每个进行迭代,但这似乎不起作用,因为我不想真正进行迭代,我只想

所以我有一个如下的散列:

等级散列={比尔:[100,95,92],弗兰克:[67,73,84]}

我想找出比尔和弗兰克的平均值

我知道如果我做了以下事情:

def average (grade_hash)
grade_hash.transform_values{|num| num.reduce(:+)/num.size}
end
然后我可以拿出比尔或弗兰克斯的平均值

我如何从所有值(比尔和弗兰克的总和)中得出平均值

我尝试在最后对每个进行迭代,但这似乎不起作用,因为我不想真正进行迭代,我只想从每个创建的数组中求和,然后找到一个平均值

想法?

试试这个

def average(grade_hash)
  grades = grade_hash.values.flatten
  grades.sum / grades.size.to_f
end
试试这个

def average(grade_hash)
  grades = grade_hash.values.flatten
  grades.sum / grades.size.to_f
end

它可能会在某个地方使用
。如果它们都是整数,那么求和和和大小浮动。否则,在我高兴之后,再钉上一张
.map(&:to\u f)
。使用
来_f
如果你想确定它不是一个整数division是的,你是对的,我在你评论的同时更新了我的答案:DOr你可以使用
fdiv
。它可能在某处使用
来_f
。如果它们都是整数,那么求和和和大小浮动。否则,在我高兴之后,再钉上一张
.map(&:to\u f)
。使用
to_f
如果你想确保不是整数除法Yep Max,你是对的,我在你发表评论的同时更新了我的答案:DOr你可以使用
fdiv
。你可以使用
grade_hash.values.reduce(0){| m,v | m+v.sum}得到所有分数的总和
也可以。您可以使用
等级散列值获得所有分数的总和。减少(0){m,v | m+v.sum}
也可以。