比较多维哈希

时间:2014-04-16 00:29:25

标签: ruby hash multidimensional-array

我有一个巨大的哈希(JSON),我想与一个"主密钥"通过删除不相似的值然后总计一个值集。

我认为用复杂的评分标准来处理测试评分是一种很好的方法。

有关如何执行此操作的建议?有什么宝石可以让我的生活更轻松吗?

{
  "A" => 10,
  "B" => 7,
  etc
    ....

哈希的构造类似于test[answer] => test[point_value],问题键/值是答案/点值。

因此,如果我想与master_key进行比较并删除不同项目(不删除像arr1-arr2这样的类似项...那么总计这些值,最好的是什么?

1 个答案:

答案 0 :(得分:0)

将哈希转换为红宝石哈希后,我会做这样的事情

 tester = { :"first" =>  { :"0" => { :"0" => { :"B" => 10 }, :"1" => { :"B" => 7 }, :"2" => { :"B" => 5 } } }}
 master = { :"first" => { :"0" => { :"0" => { :"A" => 10 }, :"1" => { :"B" => 7 }, :"2" => { :"B" => 5 } } }}
tester.reduce(0) do |score, (test,  section)| 
  section.each do |group, questions|
    questions.each do |question, answer|
      if answer.keys.first == master[test][group][question].keys.first
        score += answer.values.first
      end
    end
  end
  score
end