From: Robert Klemme Date: 2009-02-14T00:18:21+09:00 Subject: Re: How to retrive first 10 items from hash in ruby? 2009/2/13 Bertram Scharpf : > Hi, > > Am Freitag, 13. Feb 2009, 22:02:31 +0900 schrieb David A. Black: >> On Fri, 13 Feb 2009, Bertram Scharpf wrote: >>> Am Freitag, 13. Feb 2009, 21:08:19 +0900 schrieb Dave Baldwin: >>>> On 13 Feb 2009, at 11:04, Vikas Gholap wrote: >>>> >>>>> I want to retrieve first 10 items(key value pairs) from given hash{} >>>>> >>>> ary = hashTable.sort {|a,b| -1*(a[1]<=>b[1])} >>>> >>> As ary is only of temporary use, you don't need to create another >>> array ary[0,10]. I suggest: >>> >>> 10.times { puts "Key: %s ==> %s" % e.shift } >> >> Do you mean ary.shift? > > Arrgh. Of course. > > The code may still be improved: Omit the multiplication by -1 in > the sort block. > > ary = hashTable.sort { |a,b| a[1]<=>b[1] } > 10.times { puts "Key: %s ==> %s" % ary.pop } Did we have these already? p hash_table.sort_by {|k,v| -v}.first(10) p hash_table.sort_by {|k,v| v}.last(10).reverse Cheers robert -- remember.guy do |as, often| as.you_can - without end