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]] 然后我这样做: @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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |