Perl按哈希数组或哈希哈希中的哈希值排序

某用户

有人可以告诉我我在做什么错吗?我已经尝试过几乎可以想到的数组/哈希类型和排序查询的所有可能组合,但似乎无法使它正常工作。

我正在尝试按以下方式对哈希引用进行排序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

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

我实际上并不需要遍历散列,我只是希望将其排序以便以后使用。使用哈希数组很容易,但是使用哈希哈希则不容易。

磨坊主

不要在参考上调用键。在实际的哈希上调用它。

另外,this$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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按内部哈希值对哈希数组的哈希排序

来自分类Dev

按哈希值排序到哈希数组的引用中

来自分类Dev

按值对哈希数组排序

来自分类Dev

按数组排序哈希

来自分类Dev

打印按哈希键排序的哈希数组

来自分类Dev

按内部哈希值对哈希哈希进行排序

来自分类Dev

哈希数组中的哈希

来自分类Dev

按值排序数组的哈希

来自分类Dev

Perl:哈希值后的数组排序

来自分类Dev

在Perl中对数组数组的哈希值进行排序

来自分类Dev

在Perl中对数组数组的哈希值进行排序

来自分类Dev

在Perl中按值对哈希散列进行排序的问题

来自分类Dev

基于perl中每个哈希中特定键的值对哈希数组进行排序

来自分类Dev

Perl从哈希数组中填充哈希

来自分类Dev

Perl,如何删除哈希数组中的哈希?

来自分类Dev

Perl,如何删除哈希数组中的哈希?

来自分类Dev

按嵌套值对哈希排序

来自分类Dev

在Perl中访问哈希值(数组)

来自分类Dev

ArgumentError:比较哈希与哈希失败-按哈希名称对哈希数组进行排序

来自分类Dev

ArgumentError:比较哈希与哈希失败-按哈希名称对哈希数组进行排序

来自分类Dev

在perl中创建哈希哈希

来自分类Dev

从哈希数组中删除哈希?

来自分类Dev

哈希数组中的新哈希

来自分类Dev

合并哈希数组中的哈希

来自分类Dev

如何在Ruby中从数组的哈希值的哈希值构建哈希值的哈希值

来自分类Dev

打印按值排序的Perl哈希键和值

来自分类Dev

从Perl中的数组读取哈希

来自分类Dev

Perl中的双哈希值

来自分类Dev

如何按多个键对Perl哈希排序?