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

Re: Sorting Complex Data Structure

by ww (Archbishop)
on Jan 21, 2014 at 14:15 UTC ( #1071471=note: print w/replies, xml ) Need Help??

in reply to Sorting Complex Data Structure

"I think it's a array of arrays of hashes"

Perhaps you should use Data::Dumper or some other technique to confirm or rebut that thought.

Replies are listed 'Best First'.
Re^2: Sorting Complex Data Structure
by derby (Abbot) on Jan 21, 2014 at 14:35 UTC

    ww++. This is the only reasonable answer ... until you know what the data structure is, all the other solutions are just throwing code at the wall to see what sticks.

Re^2: Sorting Complex Data Structure
by Anonymous Monk on Jan 21, 2014 at 15:33 UTC
    Hi, I've used the data dumper before - it's array of array of hashes and chorobas code works. Thanks

      From the OP:

      I can access each element by using @Data[$_]{ID}, @Data[$_]{Score}...

      I assume this was a misprint for $Data[$_]{ID}, $Data[$_], since you are accessing single elements, not array slices.

      it's array of array of hashes and chorobas code works.

      Here is how choroba’s code works for me:

      use strict; use warnings; my @data = ( { ID => 'AA', Score => 20 }, { ID => 'D', Score => 30 }, { ID => 'F', Score => 7 }, { ID => 'AA', Score => 3 }, ); ## choroba's solution: my %by_id; push @{ $by_id{ $_->{ID} } }, $_->{Score} for @data; # Sort the scores for each id. $_ = [ sort { $b <=> $a } @$_ ] for values %by_id; # Sort the ids by the highest score. for my $id (sort { $by_id{$b}[0] <=> $by_id{$a}[0] } keys %by_id) { print "ID: $id\tScore: $_\n" for @{ $by_id{$id} }; }

      As you can see, there is only one array; i.e., @data is an array of hashes (AoH).

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2022-05-23 02:34 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (81 votes). Check out past polls.