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

关于perl hash输出排序问题

发布时间:2020-12-16 00:16:01 所属栏目:大数据 来源:网络整理
导读:sort函数 sort LIST sort BLOCK LIST sort SUBNAME LIST sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子
sort函数

sort LIST
sort BLOCK LIST
sort SUBNAME LIST
sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何种顺序来sort(升序,恒等,或降序)。也可提供一个BLOCK作为匿名子函数来代替SUBNAME,效果是一样的。

被比较的2个元素,会被临时赋值给变量$a和$b。它们以引用传递,所以不要修改$a或$b。假如使用子函数,它不能是递归函数。

如果key按照ASCII排序的话

foreach my $item (sort {$a cmp $b} keys %hash){
?print "$item? == > $hash{$item}","/n";
}

如果key按照ASCII逆排序的话,以上代码将 $a 和 $b 互换。


如果value按照ASCII排序的话

foreach my $item (sort { $hash{$a} cmp $hash{$b} } keys %hash?){
?print "$item? == > $hash{$item}","/n";
}

如果将value按照ASCII逆排序的话,以上代码将 $hash{$a}$hash{$b} 互换。

如果按照数字排序的话,代码和以上类似,只是将 cmp 换成符号 <=> 。以key按照数字由小到大为例:

foreach my $item (sort {$a <=> $b} keys %hash){
?print "$item? == > $hash{$item}","/n";
}

(编辑:李大同)

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

    推荐文章
      热点阅读