将键列表和值列表转换为匿名哈希列表的简洁方法

时间:2015-04-14 14:34:26

标签: perl

所以我有这个:

@keys = qw/foo bar baz/
@values = ( [1,2,3], [4,5,6], ... )

我想将其转换为:

{ foo => 1, bar => 2, baz => 3 }, { foo => 4, bar => 5, baz => 6 }, ...

这是一个很好,简洁,惯用的方法吗?

3 个答案:

答案 0 :(得分:6)

您需要哈希数组,因此您可以使用map转换@values数组,

my @keys = qw/foo bar baz/;
my @values = ( [1,2,3], [4,5,6] );
my @AoH = map { my %h; @h{@keys} = @$_; \%h } @values;

答案 1 :(得分:2)

use List::MoreUtils qw( zip );

my @keys = qw( foo bar baz );
my @values = ( [1,2,3], [4,5,6] );
my @hashes = map +{ zip @keys, @$_ }, @values;

答案 2 :(得分:1)

use List::MoreUtils qw( zip );

my @keys = qw( foo bar baz );
my @values = ( [1,2,3], [4,5,6] );
my @hashes = map { { zip @keys, @$_ } } @values;