Ruby中的MapReduce数组
发布时间:2020-12-17 02:55:54 所属栏目:百科 来源:网络整理
导读:我有两个像这样的数组: ["1","7","8","10"] 和 ["1","2","3","6","9","11"] 这些数组表示用户选择的名为Place的类中的ID.我想选择投票最多的地方ID.我尝试了转置,但由于阵列有不同的大小,它们无法转置. 此示例的预期输出为: { "1" = 2,"7" = 1,"8" = 1,"10
我有两个像这样的数组:
["1","7","8","10"] 和 ["1","2","3","6","9","11"] 这些数组表示用户选择的名为Place的类中的ID.我想选择投票最多的地方ID.我尝试了转置,但由于阵列有不同的大小,它们无法转置. 此示例的预期输出为: { "1" => 2,"7" => 1,"8" => 1,"10" => 1,"2" => 1,"3" => 1,"6" => 1,"9" => 1,"11" => 1 } 解决方法
您可以连接所有数组并计算相同元素的数量,如下所示:
arrays = [["1","10"],["1","11"]].reduce(:+) arrays.inject(Hash.new(0)) { |memo,e| memo.update(e => memo[e] + 1) } # "{ "1" => 2,"11" => 1 }" 获得此中间结果后,使用max_by从散列中选择具有最大值的键: arrays = [["1",e| memo.update(e => memo[e] + 1) } .max_by { |_,count| count }[0] #=> "1" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |