哈希的Perl Hash,获得最低的数字键

时间:2015-11-03 18:14:46

标签: perl hash key hash-of-hashes

我有哈希散列,其中第一个键是字符串,第二个键是整数。我正试图获得哈希散列中最低的第二个键。这是我的哈希。

%HoH = (
    flintstones => {
        8 => "fred",
        4 => "barney",
    },
    jetsons => {
        5 => "george",
        1 => "jane",
        9 => "elroy",    # Key quotes needed.
    },
    simpsons => {
        99 => "homer",
        5  => "marge",
        3  => "bart",
    },
);

如何获取哈希simpsons的最低(最小)密钥?在这种情况下,答案是3。我能找到的最接近的相关搜索是获取具有最高值的密钥的方法。但我正试图获得具有最低数值的密钥。

================== EDIT ============ MY ATTEMPT ============== ==

foreach my $cartoon (keys %HoH){
    if ($cartoon == "simpsons"){
        $HoH{$cartoon}{<numeric key>};   # somehow store and print lowest key
    }
}

我无法按顺序循环键(1,2,3,4等),只是存储并返回最低键,因为键(1,2,3,4等)可能不存在。我可能会尝试将密钥存储在一个单独的数组中,并获得存储在该数组中的最小密钥。那是我的尝试。这是一种关于这样做的方式。由于它是一个圆形的方式,接下来我会做更多的谷歌搜索,看看是否有一个更简单的方法(一个单行方式)来做它。

2 个答案:

答案 0 :(得分:7)

use List::Util qw(min);
print min(keys(%{$HoH{simpsons}}));

答案 1 :(得分:3)

my $min = (sort {$a <=> $b} keys $HoH{'simpsons'})[0];
print $min;
相关问题