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

在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).有没有办法按自定义顺序排序?

解决方法

Is there any way to sort by custom order?

是.见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";

(编辑:李大同)

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

    推荐文章
      热点阅读