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

Perl 将数组拆分为包含具有相同值的所有元素的数组,perl,data-structures,perl-data-structures,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"} 但你为什么需要这样一个结构呢?在我看来,你所需要的只是计数 my %counts; ++$counts{$_} for @array; 如果需要,您可以稍

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

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"}
但你为什么需要这样一个结构呢?在我看来,你所需要的只是计数

my %counts;
++$counts{$_} for @array;
如果需要,您可以稍后重新创建项目

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

我使用@ikegami,因为数据结构似乎有点奇怪。此外,由于它不会影响后续的回答,您可以更正问题的语法,即<代码>@array=(“a”、“b”、“c”、“d”、“a”、“d”、“b”、“d”、“z”);或者请注意,它是伪代码。
my @grouped;
push @grouped, [ ($_) x $counts{$_} ]
   for keys %counts;