我有一個數組散列,我想按數組大小對它們進行排序。如何按數組大小對數組的散列進行排序
這是到目前爲止我的代碼:
use strict;
use warnings;
my %hash_array = (
"array_1" => ["apple", "ball", "cat"],
"array_2" => ["def", "leppard", "rocks", "too"],
"array_3" => ["italian", "pastry", "missing", "cherry", "top"],
);
# Length of array_1
my $array_1_size = @{$hash_array{"array_1"}};
print "Should print three: $array_1_size\n";
# Found this here: https://stackoverflow.com/questions/15722286
# But my result remains unsorted
foreach my $key (sort { $hash_array{$b} <=> $hash_array{$a}} keys %hash_array) {
print "key: $key\n";
}
我知道如何獲得一個獨立的數組的大小,但我不知道如何,結合具有排序功能。
我從here複製了最後一個foreach塊,但該解決方案對我無效,因爲我的輸出沒有排序。我有一些關於最後一塊代碼的問題:
- 我沒有看到前面引用的$ b和$ a。這是一個內置的參考,分類功能理解?
- 該解決方案似乎已經爲原始海報工作,但它不適用於我的情況。然而我們最初的目標是相似的。我爲了獲得基於數組大小的有序輸出而丟失了什麼?
- 根據數組大小以升序和降序排列數組散列的最佳方法是什麼?
如果你看一下你提到的問題,海報上寫着*「我不知道這是爲什麼不工作」 *有關你複製的代碼。他接受的答案是你應該複製的內容。 – Borodin