【发布时间】:2011-01-19 09:14:51
【问题描述】:
在 Perl 中,如何从具有相同数量元素的数组 @A 和 @B 生成哈希?目标是将@A 的每个值作为@B 中的值的键。生成的哈希 %C 将使得可以唯一地标识来自 @B 的元素,并提供来自 @A 的键。
【问题讨论】:
在 Perl 中,如何从具有相同数量元素的数组 @A 和 @B 生成哈希?目标是将@A 的每个值作为@B 中的值的键。生成的哈希 %C 将使得可以唯一地标识来自 @B 的元素,并提供来自 @A 的键。
【问题讨论】:
就这么简单
my %c;
@c{@a} = @b;
【讨论】:
use List::MoreUtils 'mesh';
my %c = mesh @a, @b;
这就是内部制作的方式(如果您确定元素数量相等):
my %c = map { $a[$_] => $b[$_] } 0 .. $#a;
【讨论】:
sub mesh { @_[map $_&1 ? $_>>1 : ($_>>1)+($#_>>1), 1..@_] }
如果我正确理解问题:
my %c;
$c{$a[$_]} = $b[$_] for (0 .. @a-1);
【讨论】:
A 是键,B 是哈希 C 的值:
use strict;
use warnings;
my @a = 1 .. 3;
my @b = 4 .. 6;
my %c;
for (0 .. $#a) {
$c{$a[$_]} = $b[$_]
}
请记住,A 数组中不能有任何重复值。
【讨论】: