-6ren">
gpt4 book ai didi

perl - 如何按数组大小对数组的散列进行排序

转载 作者:行者123 更新时间:2023-12-05 00:57:09 24 4
gpt4 key购买 nike

我有一个数组散列,我想按数组大小对它们进行排序。

到目前为止,这是我的代码:

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 。这是排序函数理解的内置引用吗?
  • 该解决方案似乎适用于原始海报,但在我的情况下不起作用。然而我们最初的目标是相似的。为了获得基于数组大小的有序输出,我缺少什么?
  • 按数组大小按升序和降序对数组散列进行排序的最佳方法是什么?
  • 最佳答案

    你很接近。正如所写,您正在比较数组引用,它们或多或少是内存地址。我稍微修改了您的代码,为您提供所需的内容:

    foreach my $key ( sort { scalar(@{$hash_array{$b}}) <=> scalar(@{$hash_array{$a}}) } keys %hash_array ) {
    print "key: $key\n";
    }

    关于perl - 如何按数组大小对数组的散列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888210/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com