在ruby

时间:2015-06-01 12:10:31

标签: ruby hash

假设我在ruby中有以下哈希表,

  H = {"I"=>3, "Sam"=>2, "am"=>2, "do"=>1, "not"=>1, "eat"=> 1}

我想从H

构造以下哈希表N.
  N = {"1" => 3, "2"=>2, "3"=>1}

其中3的值表示H中值为“1”的哈希值的数量(例如"do"=>1, "not"=>1, "eat"=> 1,因此"1" => 3

在ruby中有什么简单的方法可以从H ??

构造N哈希表

提前致谢!!!

3 个答案:

答案 0 :(得分:4)

 Hash[H.values.group_by{|i| i}.map {|k,v| [k, v.count]}]

更新:将字符串作为键并按键排序:

Hash[h.values.group_by{|i| i}.map {|k,v| [k.to_s, v.count]}.sort]

答案 1 :(得分:0)

试试这个,

N = {}
H.values.each { |t| N["#{t}"] = (N["#{t}"] || 0) + 1}

答案 2 :(得分:0)

替代解决方案:

app.controller('TestClickController', function($scope) {
    $scope.testText = '';
    $scope.clickFunc = function() {
        $scope.testText = 'User clicked';
    };
});