我有以下内容:
.
.
.
foreach my $op(reverse sort {$count{$a} <=> $count{$b}} keys %count) {
printf "%-25s %s\n", $op, $count{$op};
}
.
.
.
这基本上是我列表中排序的所有元素。我只想输入前三个元素而不是所有元素,这三个元素是最重复的元素,即具有最高计数。
如果您希望我分享其余代码,请与我们联系。
谢谢。
答案 0 :(得分:5)
你确实可以给我们一个柜台。
my $limit = 3;
for my $op ( reverse sort { $count{$a} <=> $count{$b} } keys %count ) {
printf "%-25s %s\n", $op, $count{$op};
last if !--$limit;
}
如果您至少保证三个元素,则可以使用列表切片。
for my $op ( ( reverse sort { $count{$a} <=> $count{$b} } keys %count )[0..2] ) {
printf "%-25s %s\n", $op, $count{$op};
}
如果你不能确保保证,那就多久了。
my @ops = reverse sort { $count{$a} <=> $count{$b} } keys %count;
splice(@ops, 3) if @ops > 3;
for my $op (@opts) {
printf "%-25s %s\n", $op, $count{$op};
}
(if @ops > 3
可防止旧版Perl中出现警告。)