加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读