所以我有這樣的:鑰匙和值列表的列表轉換爲匿名的列表尼斯簡潔的方式散列
@keys = qw/foo bar baz/
@values = ([1,2,3], [4,5,6], ...)
而且我想將其轉換爲:
{ foo => 1, bar => 2, baz => 3 }, { foo => 4, bar => 5, baz => 6 }, ...
是什麼一個不錯的,簡潔的,慣用的方式來做到這一點?
所以我有這樣的:鑰匙和值列表的列表轉換爲匿名的列表尼斯簡潔的方式散列
@keys = qw/foo bar baz/
@values = ([1,2,3], [4,5,6], ...)
而且我想將其轉換爲:
{ foo => 1, bar => 2, baz => 3 }, { foo => 4, bar => 5, baz => 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;
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;
'我@AoH = {地圖我的$ H; @ $ h {@keys} = @ $ _; $ h} @values;'同樣的事情使用$ h hashref。 –
我最初希望避免使用一個命名的臨時變量,但現在看到它不是太多額外的代碼。 – gcbenison
List :: Moreutils可以做到這一點,如果你不想使用額外的變量。 –