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

ruby – 如何从哈希中选择前5个值?

发布时间:2020-12-17 03:56:03 所属栏目:百科 来源:网络整理
导读:我有一个ids和他们的分数哈希,它是这样的: @objects = {1=57,4=12,3=9,5=3,55=47,32=39,17=27,29=97,39=58} 如何挑选前五名并放弃其余的? 我这样做: @orderedObject = @objects.sort_by {|k,v| v}.reverse=[[29,97],[39,58],[1,57],[55,47],[32,39],[17,2
我有一个ids和他们的分数哈希,它是这样的:

@objects = {1=>57,4=>12,3=>9,5=>3,55=>47,32=>39,17=>27,29=>97,39=>58}

如何挑选前五名并放弃其余的?

我这样做:

@orderedObject = @objects.sort_by {|k,v| v}.reverse
=>[[29,97],[39,58],[1,57],[55,47],[32,39],[17,27],[4,12],[3,9],[5,3]]

然后我这样做:
只有@orderedObjects的键:

@keys = @orderedObject.map { |key,value| key }

这给了我:

=>[29,39,1,55,32,17,4,3,5]

我需要的只是[29,32]前5个索引.但是我被困住了,我不知道该怎么做.

解决方法

你可以做

@objects = {1=>57,39=>58}
@objects.sort_by { |_,v| -v }[0..4].map(&:first)
# => [29,32]
@objects.sort_by { |_,v| -v }.first(5).map(&:first)
# => [29,32]

(编辑:李大同)

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

    推荐文章
      热点阅读