簡體   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