Tengo el siguiente hash de rubí:Rubí Hash transponer
h = { i1: { q1: 1, q2:2 }, i2: { q1: 3, q2: 4} }
y quiero la transposición de la siguiente manera:
{ q1: { i1: 1, i2: 3 }, q2: { i1: 2, i2: 4 } }
Ahora, se le ocurrió una función que hace lo que yo quiero, pero me pregunto si hay una manera más sucinta/elegante para lo mismo?
Mi solución:
ht = Hash.new{ |h,k| h[k] = {} }
h.each_pair do |k,ih|
ih.each_pair{ |ik, iv| ht[ik][k] = iv }
end
Eso ya es muy sucinta. ¿Tienes un ejemplo del mundo real de cuándo quieres transformar el hash así? –
Tengo básicamente la misma estructura de datos (solo más grande) con indicadores (i1, i2, ...) y sus valores en algunas fechas (q1, q2, q3, ....). Todavía no estoy seguro de que el clima deba usar aquí matriz bidimensional (en realidad todavía estoy evaluando ambas versiones ...) –
Si haces este tipo de malabares a menudo, es posible que te resulte más fácil usar Sqlite. –