我正在尝试创建一个哈希,其中键包含在数组中,值包含在数组的数组中:
my @keys = (1,2,3,4,5); my @value1 = (a,b,c,d,e); my @value2 = (f,g,h,i,j); my @value3 = (k,l,m,n,o); my @values = ([@value1],[@value2],[@value3]); my %hash;
我想创建一个哈希,其中@keys为键,@ value为值,因此键’1’将返回值a,f,k(每个数组中的第0个元素),依此类推.
对于单个密钥,这将实现如下:
%hash=('key'=>@values);
但我不确定如何为一组键修改它.
任何帮助都会很棒!
干杯,
ñ
解决方法
我利用语法$foo [$i] [$j];将数组数组表示为二维数组.这是一个没有地图的答案:
#! /usr/bin/env perl use 5.12.0; use warnings; use Data::Dumper; my @keys = qw(alpha beta gamma delta epsolon); my @values1 = qw(one two three four five); my @values2 = qw(uno dos tres quatro cinco); my @values3 = qw(a b c d e); my @values = ( \@values1,\@values2,\@values3 ); my %hash; for my $item ( (0..$#keys) ) { my @array; push @array,$values[0][$item],$values[1][$item],$values[2][$item]; $hash{$keys[$item]} = \@array; } say Dumper \%hash;
这是输出:
$VAR1 = { 'gamma' => [ 'three','tres','c' ],'delta' => [ 'four','quatro','d' ],'alpha' => [ 'one','uno','a' ],'beta' => [ 'two','dos','b' ],'epsolon' => [ 'five','cinco','e' ] };
看起来是对的.当然,我从未验证过各种阵列的大小都是一样的.