如何在Perl中从散列中获取最小值密钥
我有一个脚本,它能够从散列值中选择最小值如何在Perl中从散列中获取最小值密钥,perl,hash,minimum,Perl,Hash,Minimum,我有一个脚本,它能够从散列值中选择最小值 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
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查看@ikegami的答案,以获得OP确切问题的最干净、最快速的解决方案。
如果您需要按数值排序的顺序访问其他键(我从您的示例中假设这就是您想要的),请使用以下命令:
my @keys_sorted_by_value = sort { $hash{$a} <=> $hash{$b} } keys %hash;
# key with min value: $keys_sorted_by_value[0]
# ...
# key with max value: $keys_sorted_by_value[-1]
my @keys_sorted_by_value = sort { $hash{$a} <=> $hash{$b} } keys %hash;
# key with min value: $keys_sorted_by_value[0]
# ...
# key with max value: $keys_sorted_by_value[-1]
my @keys_sorted_by_value = sort { $hash{$a} cmp $hash{$b} } keys %hash;