在Perl中,如何打印与散列中的最大值对应的键?

use*_*414 0 perl hash

如何只打印哈希的第一个键和元素?

我已经有一个排序的哈希,但我想只打印第一个键和各自的值谢谢,

感谢大家最后我将键和值推送到两个不同的@array和每个数组的打印元素0,它的工作原理:)

Ala*_*avi 8

哈希有无序键.因此,哈希中没有第一个键这样的键.

但是,如果您需要首先排序的密钥(最大密钥值):

my %hash = (
    'foo' => 'bar',
    'qux' => 'baz',
);

my ($key) = sort { $b cmp $a } keys %hash;
print "$key => $hash{$key}";  # Outputs: qux => baz
Run Code Online (Sandbox Code Playgroud)

请记住使用<=>而不是cmp数字排序.


SAN*_*SAN 5

在perl哈希中,没有键的排序.使用sort函数以您想要的顺序获取键,或者您可以在创建哈希时将键推入数组,并且第一个键将在数组中的第零个索引处

你可以使用下面的代码,我假设哈希名称是my_hash,键和值是数字.如果你有字符串,你可以使用cmp而不是<=>.有关更多详细信息,请参阅排序文档

获取最大密钥

foreach (sort {$b <=> $a} keys %my_hash) {
    print "Keys is $_\n";
    print "Value is $my_hash{$_}\n";
    last;
}
Run Code Online (Sandbox Code Playgroud)

获取与最大值对应的密钥

foreach (sort {$my_hash{$b} <=> $my_hash{$a}} keys %my_hash) {
    print "Keys is $_\n";
    print "Value is $my_hash{$_}\n";
    last;
}
Run Code Online (Sandbox Code Playgroud)