【问题标题】:Perl Hash of Hashes, get lowest numeric keyPerl Hash of Hashes,获取最低数字键
【发布时间】:2016-02-04 00:38:28
【问题描述】:

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

%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。我能找到的最接近的相关搜索是一种获取具有最高值的键的方法。但是我正在尝试获取具有最低数值的键。

=================== 编辑============ 我的尝试============== ==

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 等)可能不存在.我可能会尝试将密钥存储在一个单独的数组中,并获取存储在该数组中的最小密钥。那是我的尝试。这是一种关于这样做的方式。由于这是一个迂回的方式,接下来我会做更多的谷歌搜索,看看是否有更简单的方式(单线方式)来做到这一点。

【问题讨论】:

  • 您找到了返回最大值的解决方案,但您无法修改它以返回最小值?甚至不尝试修改它并在问题中发布非工作代码?
  • 我添加了我的思考过程并尝试了如何解决它。
  • 我认为发布您的尝试很重要,即使它不起作用(可能尤其是如果它不起作用),因为它显示了一个善意的尝试解决您自己的问题并激励其他人想要帮助您。

标签: perl hash key hash-of-hashes


【解决方案1】:
use List::Util qw(min);
print min(keys(%{$HoH{simpsons}}));

【讨论】:

    【解决方案2】:
    my $min = (sort {$a <=> $b} keys $HoH{'simpsons'})[0];
    print $min;
    

    【讨论】:

    • 当你有$HoH{simpsons}{10}时会发生什么?
    • sortmin 做的工作更多,尽管对于中等大小的哈希,差异可能并不显着。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多