为perl中的哈希哈希值键入两个键级别

时间:2014-09-26 15:45:00

标签: perl hash-of-hashes

我有一个代码,我需要跟踪不同类别中给定位置的某些值(随机出现)(以及相当多的值; ~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

但是我无法解决嵌套排序的语法(或者,任何人都有比这种方法更好的想法?)

1 个答案:

答案 0 :(得分:1)

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";
    }
}