From: Robert Klemme Date: 2007-08-23T22:21:47+09:00 Subject: Re: Hash#keys, Hash#values order question 2007/8/23, Ronald Fischer : > Let h be a Hash. Calculating the arrays > > k=h.keys > v=h.values > > under the assumption that h is not modified > in between, is it guaranteed that for all > indices n > > h[k[n]]==v[n] > > i.e. that Hash#values delivers the values > in the same order than Hash#keys delivers > the respective keys? > > When playing around, I found this always > the case, but can I rely on it? If you need them in the same order, then the safest method is to access them in one iteration, like: irb(main):001:0> ha={:foo=>1, :bar=>2, :baz=>3} => {:foo=>1, :bar=>2, :baz=>3} irb(main):004:0> keys, values = ha.inject([[],[]]) {|(ke,va),(k,v)| [ke << k, va << v]} => [[:foo, :bar, :baz], [1, 2, 3]] irb(main):005:0> keys => [:foo, :bar, :baz] irb(main):006:0> values => [1, 2, 3] HTH robert