在Perl中查找哈希值的最小值和最大值

bttbmeg0  于 2023-04-12  发布在  Perl
关注(0)|答案(1)|浏览(272)

我有一个散列,它将字符串存储为键,将它们的出现存储为值。

$VAR1 = {
          'ABCD' => 2,
          'EFGH' => 7,
          'IJKL' => 17,
          'MNOP' => 2,
           'OPMN' => 300,
           'QRST' => 300,
           'DEAC' => 300

}
我想找到这个哈希值的最小值和最大值。例如min = 2和max = 300
我尝试了下面的代码,它给出了错误Can't use string ("17") as an ARRAY ref while "strict refs" in use at

$minAssigned = min(@{$countPat{$pat4C}});

$maxAssigned = max(@{$countPat{$pat4C}});

我如何解决这个错误。同样,一旦我有了这些数字,我想循环通过相同哈希minAssigned到maxAssigned的值,并打印值的总出现次数。例如,值2出现2次,值17出现1次,值300出现3次。
感谢任何帮助提前!

li9yvcax

li9yvcax1#

使用values获取哈希值列表。

#!/usr/bin/perl
use warnings;
use strict;

use List::Util qw{ min max };

my $h = {
          'ABCD' => 2,
          'EFGH' => 7,
          'IJKL' => 17,
          'MNOP' => 2,
          'OPMN' => 300,
          'QRST' => 300,
          'DEAC' => 300

};

print min(values %$h), "\n";
print max(values %$h), "\n";

使用另一个哈希来计算频率:

my %freq;
++$freq{$_} for values %$h;
for my $k (keys %freq) {
    print "$k occurs $freq{$k} times.\n";
}

相关问题