0

Rubyには次のような配列があります。

@arr = [ [2.1, pass], 
         [2.1, fail],
         [2.1, pass],
         [2.1, unknown],
         [2.1, pass],
         [3.0, pass],
         [3.0, unknown],
         [3.1, pass],
         [3.1, fail] ]

出力が次のような配列になるように、ある種のハッシュまたは計算を適用したいと思います。

@result = [ [2.1, 3, 1, 1],
            [3.0, 1, 0, 1],
            [3.1, 1, 1, 0] ]

出力配列には、結果が次の形式で表示されます {バージョン、合格数、不合格数、不明数}

4

2 に答える 2

3

あなたの表現を少し翻訳すると...

@arr = [
  [2.1, :pass],
  [2.1, :fail],
  [2.1, :pass],
  [2.1, :unknown],
  [2.1, :pass],
  [3.0, :pass],
  [3.0, :unknown],
  [3.1, :pass],
  [3.1, :fail]]

次に、問題は次のように解決できます...

@arr.group_by(&:first).values.map do |x|
  y = x.flatten
  [y[0], y.count(:pass), y.count(:fail), y.count(:unknown)]
end
于 2012-10-25T23:32:49.543 に答える
0

これらは有効なハッシュではありません。ハッシュには、関連付けられたキーが必要です。これは、最初の例の配列のハッシュです。

@arr = { something: [2.1, pass], 
         somethingelse: [2.1, fail],
         another: [2.1, pass],
         andanother: [2.1, unknown],
         whatever: [2.1, pass],
         whateverelse: [3.0, pass],
         key: [3.0, unknown],
         anotherkey: [3.1, pass],
         yetanother: [3.1, fail] }

ハッシュは { と } でマークされます。配列は [ と ] です。配列の配列が必要な場合は、その [ と ] を使用します。

于 2012-10-25T23:19:51.087 に答える