Ho un hash di hash, in questo modo:Come mappare (e ordinare) i valori da un hash di hash?
%hash = (a => { b => 1, c =>2, d => 3}, a1 => { b => 11, c =>12, d => 13}, a2 => { b => 21, c =>22, d => 23})
Voglio estrarre l'elemento "b" e metterlo in un array. In questo momento, eseguo il ciclo dell'hash per farlo, ma penso di poter migliorare leggermente l'efficienza utilizzando invece la mappa. Sono abbastanza sicuro che se questo era un array di hash, userei qualcosa di simile:
@hasharray = ({ b => 1, c =>2, d => 3}, { b => 11, c =>12, d => 13}, { b => 21, c =>22, d => 23}) @array = map { ($_->{b} => $_) } @hasharray
Perdonami se mi sbaglio, sto ancora imparando come funziona mappa. Ma quello che mi piacerebbe sapere è come farei per mappare l'hash degli hash? Questo è possibile anche usando la mappa? Devo ancora trovare qualche esempio per farlo.
Ancora meglio, il passaggio successivo in questo codice consiste nell'ordinare l'array una volta popolato. Sono abbastanza sicuro che sia possibile, ma non sono abbastanza intelligente nell'usare la mappa per capirlo da solo. Come faccio a fare tutto questo in un colpo solo?
Grazie. Seth
Ha funzionato alla perfezione, esattamente quello che stavo cercando. Ho sostituito 26 linee di codice con questo e ho migliorato le prestazioni di quella funzione da circa O (n) a O (1). Grazie! – sgsax
Bene, deve ancora scorrere i valori dell'hash e ordinarli, quindi in realtà non è O (1). – Corey