在Ruby中使用散列分组

Mat*_*ite 1 ruby hash

我的目标是获取名称和数字的哈希值,例如:

hash = {
  "Matt" => 30,
  "Dave" => 50,
  "Alex" => 60
}
Run Code Online (Sandbox Code Playgroud)

并根据他们是否达到"通过"分数对他们进行分组.我想结果,以作为数组传递到两个独立的按键,说:pass:fail这样的:

hash = { "pass" => ["Alex", 60], "fail" => [["Matt", 30]["Dave",60]]}
Run Code Online (Sandbox Code Playgroud)

我知道这个group_by方法是我需要的,但我不确定如何将值传递给新键.

通过等级应由用户决定.对于此示例,您可以使用45.

Ale*_*nko 6

你可以这样做:

PASSING_GRADE = 45
hash.group_by {|_, v| v >= PASSING_GRADE ? 'pass' : 'fail'}
Run Code Online (Sandbox Code Playgroud)

结果如下:

{"fail"=>[["Matt", 30], "pass"=>[["Alex", 60], ["Dave", 50]]]}
Run Code Online (Sandbox Code Playgroud)