在Perl中,如何使用自定义排序对哈希键进行排序?
发布时间:2020-12-15 23:27:51 所属栏目:大数据 来源:网络整理
导读:我正在尝试对文件的哈希工作,并且工作必须按特定顺序完成.大多数人会说列表可以像这样订购: for my $k (sort keys %my_hash){ print "$k=$my_hash{$k},";} 但是,我需要非字母顺序,实际上键开头是一个单词然后_然后它们将G转到数字L到M,P,R,T或D中的任何一个
我正在尝试对文件的哈希工作,并且工作必须按特定顺序完成.大多数人会说列表可以像这样订购:
for my $k (sort keys %my_hash) { print "$k=>$my_hash{$k},"; } 但是,我需要非字母顺序,实际上键开头是一个单词然后_然后它们将G转到数字L到M,P,R,T或D中的任何一个(例如word_G.txt,word_2.txt,..,word_P.txt).有没有办法按自定义顺序排序? 解决方法
是.见sort. 例如: #!/usr/bin/env perl use warnings; use strict; my @order = qw(G 1 2 3 L M P R T D); my %order_map = map { $order[$_] => $_ } 0 .. $#order; my $pat = join '|',@order; my @input = qw(word_P.txt word_2.txt word_G.txt); my @sorted = sort { my ($x,$y) = map /^word_($pat)[.]txtz/,$a,$b; $order_map{$x} <=> $order_map{$y} } @input; print "@sortedn"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |