perl - 如何从 Perl 中的哈希中获取最小值键
问题描述
我有能够从哈希值中选择最小值的脚本。
use strict;
use warnings;
use Data::Dumper;
use List::Util qw(min);
my @array = qw/50 51 52 53 54/;
my $time = 1596561300;
my %hash;
foreach my $element(@array){
$hash{$time} = $element;
$time += 6; #based on some condition incrementing the time to 6s
}
print Dumper(\%hash);
my $min = min values %hash;
print "min:$min\n";
在这里,我可以从50
哈希值中的所有值中获取最小值。但是我如何获得与最小值对应的哈希键,即1596561300
.
解决方案
从键中,您可以获得值。因此,您需要具有最小关联值的键。
min LIST
可以写成reduce { $a <= $b ? $a : $b } LIST
,所以我们可以使用
use List::Util qw( reduce );
my $key = reduce { $hash{$a} <= $hash{$b} ? $a : $b } keys %hash;
my $val = $hash{$key};
或者
my ($key) = keys(%hash);
my $val = $hash{$key};
for (keys(%hash)) {
if ($hash{$_} < $val) {
$key = $_;
$val = $hash{$val};
}
}
推荐阅读
- ios - OpenGL中更好的重叠点
- sql - 为 Oracle 实现简单的迁移脚本支持
- capistrano - CircleCI 2.0 - 缺少 SSH 密钥(从 Circle 1.0 迁移)
- java - 套接字编程:客户端断开连接使服务器挂起
- docker - 织物测试设置错误
- makefile - Buildroot 为 MIPS32 交叉编译 GDB 服务器
- php - 通过传递相同参数的多个值在 Mysql Db 中搜索值
- r - 如何将两列的数据合并为一列并按类型识别每个条目?
- php - Symfony 4 / Security 无法连接到管理面板
- python - 从 Python 脚本查询 Windows 10/8 监视器缩放?