From: dblack@... Date: 2006-01-05T04:27:22+09:00 Subject: Re: Question on iterating a hash Hi -- On Thu, 5 Jan 2006, James Edward Gray II wrote: > On Jan 4, 2006, at 12:46 PM, phil swenson wrote: > >> I have a hash that looks like this : {"1"=>"0, "3"="1", "45"=>"1", >> "101"=>"0"} >> >> What I want is an array of all the keys that have hash values equal to >> "1" ["3","45"] in this case. >> >> Yeah, i can just iterate the keys... but it seems like there is a "ruby" >> way to do this. Any thoughts? > >>> h = Hash[*%w{1 0 3 1 45 1 101 0}] > => {"45"=>"1", "1"=>"0", "101"=>"0", "3"=>"1"} >>> h.select { |key, value| value == "1" }.map { |key, value| key } > => ["45", "3"] Wouldn't it be easier to iterate through the keys? I'm not sure why Phil didn't want to. (Phil?) h.keys.select {|k| h[k] == 1} David -- David A. Black dblack@wobblini.net "Ruby for Rails", from Manning Publications, coming April 2006! http://www.manning.com/books/black