in reply to Data Structure Transformation
I imagine there is some module out there that does it, but writing a general purpose routine to convert an array of key-value pairs into a hash of arrays (HoA) is less than 10 lines of code:
use strict; use warnings; sub convertKeyValueArrayToHash { my ($aData, $sKeyName, $sValueName) = @_; my $hData={}; foreach (@$aData) { my $k = $_->{$sKeyName}; my $v = $_->{$sValueName}; push @{$hData->{$k}}, $v; } return $hData; }
And a working demo:
# ------------------------------ # Demo # ------------------------------ my $var = [ { 'city' => 'New York', 'name' => 'Bill' }, { 'city' => 'New York', 'name' => 'Ronald' }, { 'city' => 'Boston', 'name' => 'George' } ]; use Data::Dumper; my $hData = convertKeyValueArrayToHash($var,'city','name'); print Dumper($hData), "\n";
|
|---|