我有一个数组散列,我想按数组大小对它们进行排序。如何按数组大小对数组的散列进行排序
这是到目前为止我的代码:
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