在这里的第一篇文章(以及我正在尝试为此制作的程序!)。
我不确定这是否可能,但我想要做的是按照其中的项目出现的次数对我的数组进行排序,然后将它们出现的次数转换为数字。
由此:
@array = (blue, red, blue, green, red, blue)
我想创建这个:
@array1 = (blue, blue, blue, red, red, green)
然后我想创建这个:
@array2 = (3, 2, 1)
提前致谢!
my @array = qw(blue red blue green red blue);
my %seen;
$seen{$_}++ for @array;
my @array1 = sort { $seen{$b} <=> $seen{$a} } @array;
my @array2 = sort { $b <=> $a } values %seen;
%seen
是散列,它保存每种颜色的频率/计数:
blue => 3,
red => 2,
green => 1,
第一次排序使用哈希作为计数查找,以便根据相应出现的数量按降序对颜色进行排序。第二种排序是对散列值 ( 1,2,3
) 的普通数字降序排序。