【发布时间】:2023-03-29 16:23:01
【问题描述】:
假设我有一个值数组,然后是键(与分配给哈希的期望相反):
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]))
【问题讨论】: