关于perl hash输出排序问题

关于perl hash输出排序问题,第1张

概述sort函数 sort LIST sort BLOCK LIST sort SUBNAME LIST sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何 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";
}

总结

以上是内存溢出为你收集整理的关于perl hash输出排序问题全部内容,希望文章能够帮你解决关于perl hash输出排序问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存