将数组拆分为包含具有相同值的所有元素的数组

时间:2015-04-26 16:12:56

标签: perl data-structures perl-data-structures

例如,如果我有这个数组:

array={"a","b","c","d","a","d","b","d","z"}

我想将它拆分为Perl涉及相同元素的数组。

输出应该是这样的:

array1={"a","a"}
array2={"b","b"}
array3={"c"}
array4={"d","d","d"}
array5={"z"}

1 个答案:

答案 0 :(得分:3)

my @grouped;
my %indexes;
push @{ $grouped[ $indexes{$_} //= @grouped ] }, $_
   for @array;

但为什么你需要这样的结构呢?在我看来,你需要的只是数量。

my %counts;
++$counts{$_} for @array;

如果需要,您可以稍后重新创建项目。

my @grouped;
push @grouped, [ ($_) x $counts{$_} ]
   for keys %counts;