我有一个哈希,用于存储键值对的数量,这些值是从输入文档中提取的字符串数组进行排序并打印出来的。
%count = ();
foreach $string (@strings) {
$count{$string}++;
}
foreach my $key (sort {$count{$b} <=> $count{$a} } keys %count) {
print $key, ": ", $count{$key} ;
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有一种方法只能在哈希中打印一定数量的键值对,而不是全部?即打印值的前5名?
编辑:for循环可以解决这个问题吗?
可以从排序返回的列表中切出一部分
use strict;
use warnings;
use feature 'say';
....
my %count;
foreach my $string (@strings) {
++$count{$string}
}
say "$_: $count{$_}"
for ( sort { $count{$b} <=> $count{$a} } keys %count )[0..4];
Run Code Online (Sandbox Code Playgroud)
(这期望哈希确实有五个键;如果可能发生这种情况,那么您将不会受到警告的打击,因此请在这种情况下添加一个测试$_ and say "..." for ...)
问题中的代码显然没有使用strict;我建议始终使用它。
%count = ()如果以前已经填充了哈希并且现在需要将其清空,这是有道理的。如果要创建它,则只需声明(并且不带= (),则不执行任何操作)。
注意,感谢Grinnz:最近的List :: Util 1.50添加head(和tail)函数
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |