Как прекратить итерации после топ-10 в sort_by - PullRequest
1 голос
/ 22 февраля 2012

Не могу понять, как напечатать здесь только первые 10 строк этого результата. Пытался некоторое время и я + = 1 подход, но не смог вписаться.

# make the hash default to 0 so that += will work correctly
from_count = Hash.new(0)

# iterate over the array, counting duplicate entries
results.each do |v|
  from_count[v] += 1
end

#prints all k,v values sorted by v but I only want the first 10 lines
from_count.sort_by { |k, v| v }.reverse.each{|k,v| puts "Top 10: \n\n #{v} -- #{k}"}

Ответы [ 2 ]

1 голос
/ 11 мая 2015

Начиная с Ruby 2.2 вы можете сделать

from_count.max_by(10){ |k, v| v }
1 голос
/ 22 февраля 2012

Довольно просто:)

from_count.sort_by { |k, v| v }.reverse.first(10).each{|k,v| puts "Top 10: \n\n #{v} -- #{k}"}
                                          ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...