假设我有一个值数组,然后是键(与散列的赋值相反):
打印
use strict;
use warnings;
use Data::Dump;
my @arr = qw(1 one 2 two 3 three 4 four 1 uno 2 dos 3 tres 4 cuatro);
my %hash = @arr;
dd \%hash;
打印
{ 1 => "uno", 2 => "dos", 3 => "tres", 4 => "cuatro" }
很明显,在构建哈希表时会消除重复的键。
我如何颠倒用于构建哈希表的值对的顺序?
我知道可以编写类似C风格的循环:
for(my $i=1; $i<=$#arr; $i=$i+2){
$hash{$arr[$i]}=$arr[$i-1];
}
dd \%hash;
# { cuatro => 4, dos => 2, four => 4, one => 1, three => 3, tres => 3, two => 2, uno => 1 }
但那看起来有点笨拙。我正在寻找更符合 Perl 语言习惯的方法。
在 Python 中,我只需执行 dict(zip(arr[1::2], arr[0::2]))
即可。
reverse
这个函数;只是没有联想到它可以用来翻转整个数组,因为在 Python 中,构建关联数组需要使用键值对元组。我一直认为需要逐个反转每个键值对,而现在显然只需要反转整个数组即可。 - the wolf