Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: More efficient way to lookup with 2 AoA's.

by BrowserUk (Pope)
on Jul 27, 2004 at 21:09 UTC ( #377864=note: print w/replies, xml ) Need Help??


in reply to More efficient way to lookup with 2 AoA's.

Like everyone says--whenever you need to do a lookup in Perl: Think hashes,

#! perl -slw use strict; use Data::Dumper; my @gene_score = ( [ "gene_name_0", "score_0" ], [ "gene_name_1", "score_1" ], # ... [ "gene_name_400", "score_400" ] ); my @gene_start_stop_chr = ( [ "gene_name_0", "start_0", "stop_0", "chr_0" ], [ "gene_name_1", "start_1", "stop_1", "chr_1" ], # ... [ "gene_name_400", "start_400", "stop_400", "chr_400" ], [ "gene_name_30000", "start_30000", "stop_30000", "chr_30000 +" ] ); ## Build a hash from the lookup array my %gene_start_stop_chr = map{ $_->[ 0 ] => [ @{ $_ }[ 1 .. 3 ] ] } @gene_start_stop_chr; ## Use it to map the inputs to results my @results = map{ [ $_->[ 0 ], $_->[ 1 ], @{ $gene_start_stop_chr{ $_->[ 0 ] } } ] } @gene_score; print Dumper \@results; __END__ P:\test>377857 $VAR1 = [ [ 'gene_name_0', 'score_0', 'start_0', 'stop_0', 'chr_0' ], [ 'gene_name_1', 'score_1', 'start_1', 'stop_1', 'chr_1' ], [ 'gene_name_400', 'score_400', 'start_400', 'stop_400', 'chr_400' ] ];

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://377864]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2018-06-23 05:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?



    Results (125 votes). Check out past polls.

    Notices?