假设我有一个值数组,然后是键(与散列的赋值相反):
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;
Run Code Online (Sandbox Code Playgroud)
打印
{ 1 => "uno", 2 => "dos", 3 => "tres", 4 => "cuatro" }
Run Code Online (Sandbox Code Playgroud)
显然,在构造散列时消除了重复键.
如何反转用于构造哈希的值对的顺序?
我知道我可以写一个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 }
Run Code Online (Sandbox Code Playgroud)
但这似乎有点笨拙.我正在寻找一些更加惯用的Perl.
在Python中,我会这样做 dict(zip(arr[1::2], arr[0::2]))
用途reverse:
my %hash = reverse @arr;
Run Code Online (Sandbox Code Playgroud)
Perl中的内置函数列表位于perldoc perlfunc中.
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |