创建一个哈希,其中键是一个数组,值是一个数组数组

前端之家收集整理的这篇文章主要介绍了创建一个哈希,其中键是一个数组,值是一个数组数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个哈希,其中键包含在数组中,值包含在数组的数组中:

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'
           ]
    };

看起来是对的.当然,我从未验证过各种阵列的大小都是一样的.

猜你在找的Perl相关文章