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