Perl:在排序的哈希中键入第一个元素

Perl: Type first elements in a sorted hash

我有以下内容:

.
.
.
foreach my $op(reverse sort {$count{$a} <=> $count{$b}} keys %count) {
       printf "%-25s %s\n", $op, $count{$op};
}
.
.
.

这基本上是对列表中的所有元素进行排序。我只想输入前三个元素而不是所有元素,这三个元素是最重复的元素,即具有最高计数。

如果您希望我分享我的其余代码,请告诉我。

谢谢。

你确实可以给我们一个柜台。

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 中出现警告。)