使用两个数组进行哈希,一个具有数组值键的哈希

Dan*_*ris 0 perl hash

我有2个数组,我想用它来制作哈希

use warnings;
use strict;
use List::MoreUtils;
use Tie::IxHash;    

my %KEY_VALUE;
tie %KEY_VALUE,'Tie::IxHash';

my @KEY= qw(
0
0
5
1
1
1
2
2
2
2
3
4
);

my @VALUE= qw(
A
B
C
D
E
F
G
H
I
J
K
L
);

@KEY_VALUE{@KEY}=@VALUE;

print join("\t",%KEY_VALUE);
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

0   B   5   C   1   F   2   J   3   K   4   L
Run Code Online (Sandbox Code Playgroud)

这是因为%KEY_VALUE的值不断更新,在这种情况下,它只能有1个Key和1个Value.

所以,我想知道是否有一种方法可以保存所有值及其相应的键.

预期结果:

0   A   B   5   C   1   D   E   F   2   G   H   I   J   3   K   4   L
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 5

只需将值推送到存储在每个键下的数组引用即可.但是,您无法直接输出结构.

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

use Tie::IxHash;

tie my %key_value,'Tie::IxHash';

my @keys   = qw( 0 0 5 1 1 1 2 2 2 2 3 4 );
my @values = qw( A B C D E F G H I J K L );

push @{ $key_value{ $keys[$_] } }, $values[$_] for 0 .. $#keys;

print join ' ', map "$_ @{ $key_value{$_} }", keys %key_value;
Run Code Online (Sandbox Code Playgroud)