Arrays 如何用2个数组创建二维数组
如何用2个数组创建多维数组Arrays 如何用2个数组创建二维数组,arrays,perl,Arrays,Perl,如何用2个数组创建多维数组 @param=("param1","param2","param3"); @value=("value1_1, value1_2, value1_3", "value2_1, value2_2, value2_3","value3_1, value3_2, value3_3"); Output: @out=(["param1"]["value1_1", "value1_2", "value1_3"], ["param2
@param=("param1","param2","param3");
@value=("value1_1, value1_2, value1_3", "value2_1, value2_2, value2_3","value3_1, value3_2, value3_3");
Output:
@out=(["param1"]["value1_1", "value1_2", "value1_3"], ["param2"]["value2_1", "value2_2", "value2_3"], ["param3"]["value3_1", "value3_2", "value3_3"])
我试过这样做:
$j=0;
foreach $i(@param1){
push @{$out[$i]}, split(", ", $value[$j]);
$j++;}
我不太清楚您想要创建什么样的数据结构。 但是,我假设您正在尝试创建数组的散列(散列表也称为字典或关联数组),而不是数组。 Perl的不同之处在于数组总是使用整数作为键,而散列总是使用字符串 由此产生的数据结构如下所示
%out = (
'param1' => ['value1_1', 'value1_2', 'value1_3'],
'param2' => ['value2_1', 'value2_2', 'value2_3'],
'param3' => ['value3_1', 'value3_2', 'value3_3'],
);
我们可以这样创建此数据结构:
my %out;
for my $i (0 .. $#param) {
$out{$param[$i]} = [split /,\s*/, $value[$i]];
}
请注意,$#foo
是@foo
数组中的最高索引。因此,0$#foo
将是@foo
中所有索引的范围。还请注意,与使用方括号的数组不同,使用大括号下标$hash{$key}
访问散列中的条目$array[$index]
您可以通过使用切片同时访问散列或数组中的多个元素–@foo{'a','b','c'}
相当于($foo{a},$foo{b},$foo{c})
。我们还可以使用map{BLOCK}list
函数来转换元素列表。总之,这就提供了以下解决方案:
my %out;
@out{@param} = map { [split /,\s*/, $_] } @value;
在映射块内,$\uu
变量依次设置为输入列表中的每个项目
要了解有关复杂数据结构的更多信息,请阅读(按以下顺序):
您还可以阅读和的文档。我不太清楚您要创建什么样的数据结构。 但是,我假设您正在尝试创建数组的散列(散列表也称为字典或关联数组),而不是数组。 Perl的不同之处在于数组总是使用整数作为键,而散列总是使用字符串 由此产生的数据结构如下所示
%out = (
'param1' => ['value1_1', 'value1_2', 'value1_3'],
'param2' => ['value2_1', 'value2_2', 'value2_3'],
'param3' => ['value3_1', 'value3_2', 'value3_3'],
);
我们可以这样创建此数据结构:
my %out;
for my $i (0 .. $#param) {
$out{$param[$i]} = [split /,\s*/, $value[$i]];
}
请注意,$#foo
是@foo
数组中的最高索引。因此,0$#foo
将是@foo
中所有索引的范围。还请注意,与使用方括号的数组不同,使用大括号下标$hash{$key}
访问散列中的条目$array[$index]
您可以通过使用切片同时访问散列或数组中的多个元素–@foo{'a','b','c'}
相当于($foo{a},$foo{b},$foo{c})
。我们还可以使用map{BLOCK}list
函数来转换元素列表。总之,这就提供了以下解决方案:
my %out;
@out{@param} = map { [split /,\s*/, $_] } @value;
在映射块内,$\uu
变量依次设置为输入列表中的每个项目
要了解有关复杂数据结构的更多信息,请阅读(按以下顺序):