in reply to Re^2: inverting hash / grouping values
in thread inverting hash / grouping values
Next attempt:
use strict; use warnings; use List::Util 'reduce'; use List::MoreUtils 'mesh'; use Data::Dumper; my %t = ( a => 1, b => 2, c => 1, d => 2, e => 1, f => 2, g => 3 ); my( $k, $v ) = @{ +reduce { if( $a->[0]->[-1] eq $b->[0]->[0] ) { push @{$a->[1]->[-1]}, $b->[1]->[0]->[0]; } else { push @{$a->[0]}, $b->[0]->[0]; push @{$a->[1]}, [$b->[1]->[0]->[0]]; } $a; } map { [ [$t{$_}], [[$_]] ] } sort { $t{$a} <=> $t{$b} } keys %t } +; my %i = mesh @$k, @$v; print Dumper \%i;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: inverting hash / grouping values
by LanX (Saint) on Sep 27, 2013 at 18:26 UTC | |
by hdb (Monsignor) on Sep 28, 2013 at 08:26 UTC | |
by LanX (Saint) on Sep 28, 2013 at 11:34 UTC |
In Section
Seekers of Perl Wisdom