如何将两个数组转换为哈希而不会丢失Perl中的重复项

1 arrays sorting perl hash

我有两个长度相等的Perl数组,例如 -

@year = ('1995', '2003', '1997', '1995', '2012');
@title = ('dog', 'rabbit', 'tiger', 'lion', 'elephant');
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为哈希,其中多年为关键,标题为值,因此我可以对它们进行排序,操纵它们等,但将它们转换为直接哈希将删除重复项,例如1995年发生两次.

在保留重复密钥实例的同时将此数据转换为哈希的最佳方法是什么?

cho*_*oba 8

使用数组哈希(HoA):

#!/usr/bin/perl
use warnings;
use strict;

my @year  = qw(1995 2003 1997 1995 2012);
my @title = qw(dog rabbit tiger lion elephant);

my %hash;
for my $idx (0 .. $#year) {
    push @{ $hash{ $year[$idx] } }, $title[$idx];
}

for my $year (sort { $a <=> $b } keys %hash) {
    print "$year: ", join(', ', @{ $hash{$year} }), "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

1995: dog, lion
1997: tiger
2003: rabbit
2012: elephant
Run Code Online (Sandbox Code Playgroud)

  • @MarkSetchell:已更新. (2认同)