Ruby排序Hash By Inner Hash的计数值相同

时间:2013-03-25 19:08:42

标签: ruby

我有哈希哈希,我想要完成的是根据相同值的内部哈希计数的计数对哈希进行排序。所以,让我们说这是我的哈希。

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"} 
       }

我想对哈希进行排序,以便Run1出现在Run1之前,因为我试图按运行“失败”的次数排序

我想我需要像

这样的东西
hash.sort_by{|key, innerHash| innerHash.values.count('failed')}

非常感谢任何帮助或建议

1 个答案:

答案 0 :(得分: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') }]