[英]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.