Ho il seguente hash rubino:Rubino Hash recepire
h = { i1: { q1: 1, q2:2 }, i2: { q1: 3, q2: 4} }
e voglio recepirla nel modo seguente:
{ q1: { i1: 1, i2: 3 }, q2: { i1: 2, i2: 4 } }
Ora, mi si avvicinò con una funzione che fa quello che voglio, ma mi chiedo se c'è un modo più succinto/elegante per la stessa cosa?
La mia soluzione:
ht = Hash.new{ |h,k| h[k] = {} }
h.each_pair do |k,ih|
ih.each_pair{ |ik, iv| ht[ik][k] = iv }
end
che è già molto succinta. Hai un esempio reale di quando vuoi trasformare l'hash in quel modo? –
Ho praticamente la stessa struttura dati (solo più grande) con indicatori (i1, i2, ...) e i loro valori in alcune date (q1, q2, q3, ....). Non sono ancora sicuro che dovrei usare qui un array bidimensionale (in realtà sto ancora valutando entrambe le versioni ...) –
Se fai spesso questo tipo di giocoleria, potresti trovare più facile usare Sqlite. –