繁体   English   中英

在Perl中对两个级别的键进行排序以哈希散列

[英]Sort both levels of keys for hash of hashes in perl

我有一个代码,需要跟踪不同类别中给定位置的一些值(随机出现)(其中相当大量;〜40,000),所以我认为散列的哈希值是最好的方式,将类别作为键的第一层,将位置作为第二键并将值作为值; 就像是:

%HoH = {
      'cat1' => {
                  '7010' => 19,
                  '6490' => 13,
                  '11980' => 2
               }
      'cat2' => {
                  '7010' => 28,
                  '10470' => 13,
                  '205980' => 54
               }
        }

然后,我需要按照两个类别的顺序对其进行排序和打印,然后进行定位,以得到如下输出文件:

cat1    6490     13
cat1    7010     19
...
cat2    7010     28

但是我无法计算出嵌套排序的语法(或者,有人比这种方法更好的主意吗?)

Perl使得在遍历散列的哈希值时轻松高效地对键进行排序:

for my $cat (sort keys %HoH) {
    # numerical sort:
    for my $digits (sort { $a <=> $b } keys %{$HoH{$cat}}) {
        print join("\t", $cat, $digits, $HoH{$cat}{$digits}) . "\n";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM