Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: How to get Keys from hash having same value?

by ikegami (Pope)
on Jan 07, 2008 at 09:57 UTC ( #660790=note: print w/replies, xml ) Need Help??


in reply to How to get Keys from hash having same value?

If you're going to do this repeatedly (e.g. first find all the keys with value 'a', then find all keys with value 'b', etc.), then it might help to create a hash that maps the values to keys.
my %val_by_key = ( 1 => 'a', 2 => 'b', 3 => 'a', 4 => 'c', ); my %keys_by_val foreach my $k (keys %vals_by_key) { my $v = $vals_by_key{$k}; push @{ $keys_by_val{$v} }, $k; } # a: 1, 3 print('a: ', join(', ', @{$keys_by_val{'a'}}), "\n"); # a: 1, 3 # b: 2 # c: 4 foreach my $v (keys %keys_by_val) { print("$v: ", join(', ', @{$keys_by_val{$v}}), "\n"); }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://660790]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2020-08-13 14:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Which rocket would you take to Mars?










    Results (74 votes). Check out past polls.

    Notices?