Posible acceder al índice en un Hash cada bucle?

Probablemente me esté perdiendo algo obvio, pero ¿hay alguna forma de acceder al índice / conteo de la iteración dentro de un hash en cada bucle?

hash = {'three' => 'one', 'four' => 'two', 'one' => 'three'} hash.each { |key, value| # any way to know which iteration this is # (without having to create a count variable)? } 

Si quieres saber el índice de cada iteración, puedes usar .each_with_index

 hash.each_with_index { |(key,value),index| ... } 

Podría iterar sobre las claves y obtener los valores manualmente:

 hash.keys.each_with_index do |key, index| value = hash[key] print "key: #{key}, value: #{value}, index: #{index}\n" # use key, value and index as desired end 

EDITAR: según el comentario de rampion, también acabo de enterarme de que puede obtener tanto la clave como el valor de una tupla si se itera sobre hash :

 hash.each_with_index do |(key, value), index| print "key: #{key}, value: #{value}, index: #{index}\n" # use key, value and index as desired end