【发布时间】:2023-03-06 08:33:01
【问题描述】:
我编写了一些 Perl 代码,用于在哈希中搜索最高的键值对,其中键是文本,值是数字:
my $o_val = 0; # FOR TRACKING HIGHEST VALUE ENCOUNTERED IN THE LOOP
my $o_key; # FOR TRACKING CORRESPONDING KEY TO THE HIGHEST VALUE
while ( my ($key, $val) = each(%NG) ) {
if ( $val > $o_val ) {
$o_val = $val;
$o_key = $key;
}
}
print "$okey\n";
问题在于,它无法解释最高价值并列的可能性。 如果我的测量变量可能会随着循环的每次迭代而发生变化,我如何捕获所有与最高值相关的键值对?
我的想法是,在 $o_val 被确定为最高值之后,我可以编写另一个 while 循环来运行相同的哈希,然后将与 $o_val 配对的每个键推入另一个数组,例如:
my @highest; # ARRAY OF HIGHEST-VALUE KEYS
while ( my ($key, $val) = each(%NG) ) {
if ( $val == $o_val ) { push(@highest, $key); }
}
但这似乎有点低效。我希望有一些我不知道的 Perl 命令可以让我识别散列中的最高值,而无需遍历它,这样我就可以在我的问题中使用第二段代码。
【问题讨论】: