gpt4 book ai didi

arrays - Perl 按散列数组或散列散列中的散列值排序

转载 作者:行者123 更新时间:2023-12-01 07:56:47 26 4
gpt4 key购买 nike

谁能告诉我我在这里做错了什么?我已经尝试了几乎所有我能想到的数组/散列类型和排序查询的可能组合,但似乎无法让它发挥作用。

我正在尝试按 value1 对下面的哈希引用进行排序:

my $test = {
'1' => { 'value1' => '0.001000', 'value2' => 'red'},
'2' => { 'value1' => '0.005000', 'value2' => 'blue'},
'3' => { 'value1' => '0.002000', 'value2' => 'green'},
'7' => { 'value1' => '0.002243', 'value2' => 'violet'},
'9' => { 'value1' => '0.001005', 'value2' => 'yellow'},
'20' => { 'value1' => '0.0010200', 'value2' => 'purple'}
};

使用这个排序循环:
foreach (sort { $test{$a}->{'value1'} <=> $test{$b}->{'value1'} } keys \%{$test} ){
print "key: $_ value: $test->{$_}->{'value1'}\n"
}

我得到:
key: 1 value: 0.001000
key: 3 value: 0.002000
key: 7 value: 0.002243
key: 9 value: 0.001005
key: 2 value: 0.005000
key: 20 value: 0.0010200

我试过整数,同样的事情似乎发生了。

我实际上不需要遍历哈希,或者我只是希望它订购以供以后使用。使用散列数组很容易做到,但使用散列散列就不是这样了..?

最佳答案

不要在引用上调用键。在实际哈希上调用它。

还有,这个 $test{$a}-> , 应该是 $test->{$a} , 因为 $test是一个哈希引用。

foreach (sort { $test->{$a}{'value1'} <=> $test->{$b}{'value1'} } keys %{$test} ){
print "key: $_ value: $test->{$_}->{'value1'}\n"
}

如果您有 use strict; use warnings; 打开后,您会收到以下错误以提醒您注意问题:
Global symbol "%test" requires explicit package name

关于arrays - Perl 按散列数组或散列散列中的散列值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917068/

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