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

如何保持我添加到Perl哈希的密钥顺序?

发布时间:2020-12-15 21:18:45 所属栏目:大数据 来源:网络整理
导读:在以下程序中使用散列值计算其发生次数后,如何维护实际列表的顺序?例如, DATA是 abeac d acdbetc. 使用哈希,我计算每个元素的发生。 我想要的是: a 3b 2e 1c 2d 2 但以下程序另外显示。 my (%count,$line,@array_1,@array_2);while ($line = DATA) { $c
在以下程序中使用散列值计算其发生次数后,如何维护实际列表的顺序?例如,< DATA>是
a
b
e
a
c 
d 
a
c
d
b
etc.

使用哈希,我计算每个元素的发生。

我想要的是:

a  3
b  2
e  1
c  2
d  2

但以下程序另外显示。

my (%count,$line,@array_1,@array_2);
while ($line = <DATA>) {
    $count{$line}++ if ( $line =~ /S/ );
}
@array_1 = keys(%count);
@array_2 = values(%count);
for(my $i=0; $i<$#array_1; $i++)
{
   print "$array_1[$i]t $array_2[$i]";
}

解决方法

哈希没有订购,但像往常一样,CPAN提供了一个解决方案: Tie::IxHash
use Tie::IxHash;
my %count;
tie %count,'Tie::IxHash';

while ($line = <DATA>) {
$count{$line}++ if ( $line =~ /S/ );
}

while( my( $key,$value)= each %count) {
    print "$keyt $value"; 
}

(编辑:李大同)

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

    推荐文章
      热点阅读