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 中出现警告。)
我有以下内容:
.
.
.
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 中出现警告。)