加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

arrays – Perl按散列数组中哈希值或散列哈希值排序

发布时间:2020-12-16 06:07:05 所属栏目:大数据 来源:网络整理
导读:谁能告诉我这里我做错了什么?我已经尝试了几乎所有可能的数组/散列类型和排序查询的组合,我能想到并且似乎无法使其工作. 我试图通过value1对哈希引用进行排序: my $test = { '1' = { 'value1' = '0.001000','value2' = 'red'},'2' = { 'value1' = '0.00500
谁能告诉我这里我做错了什么?我已经尝试了几乎所有可能的数组/散列类型和排序查询的组合,我能想到并且似乎无法使其工作.

我试图通过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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读