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";
In reply to Re: Data Structure Transformation
by ELISHEVA
in thread Data Structure Transformation
by aartist
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |