0

私はハッシュのハッシュを持っており、私が達成しようとしているのは、同じ値の内部ハッシュのカウントに基づいてハッシュをソートすることです。これが私のハッシュだとしましょう。

hash = { 
         "Run1"=>{"March 24, 2013"=>"failed", "March 23, 2013"=>"failed", "March 21, 2013"=>"failed", "March 19, 2013"=>"passed", "March 18, 2013"=>"passed"},
         "Run2"=>{"March 24, 2013"=>"failed", "March 23, 2013"=>"failed", "March 21, 2013"=>"failed", "March 19, 2013"=>"failed", "March 18, 2013"=>"failed"} 
       }

実行が「失敗」した回数で並べ替えようとしているため、Run2がRun1の前に表示されるようにハッシュを並べ替えたい

私は私がのようなものが必要だと思っています

hash.sort_by{|key, innerHash| innerHash.values.count('failed')}

ヘルプや提案は大歓迎です

4

1 に答える 1

3

リルの修正:

hash.sort_by { |_,h| -h.values.count('failed') } # notice force negative

...そして動作するはずです。sort_by常に配列を返すことに注意してください。したがって、次のことを行う必要があります。

sorted_hash = Hash[hash.sort_by { |_,h| -h.values.count('failed') }]
于 2013-03-25T19:45:02.187 に答える