如何将 2 元素列表的列表制作成哈希?
How to make a list of 2-element lists into a hash?
我有一个双元素列表的列表,就像你通过 (1..5) Z (20..24)
得到的那样,我想把它变成一个散列(在这个例子中,你通过 {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
。我可以做到 "by hand",但这不太优雅,而且我确信 Raku 有一种惯用的方式来做到这一点。我想出的不优雅的替代方案是:
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
my %h = (1..5) Z=> (20..24);
say %h; # {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 => 24}
Z
元运算符将运算符作为其名称的一部分,默认为 ,
,因此默认创建列表。如果您添加 Pair
构造函数(又名胖逗号),那么您将创建一个 Pair
列表,您可以将其输入 Hash
.
另一种解决方案是 flat
十 Z
的结果:
my %h = flat (1..5) Z (20..24);
我有一个双元素列表的列表,就像你通过 (1..5) Z (20..24)
得到的那样,我想把它变成一个散列(在这个例子中,你通过 {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
。我可以做到 "by hand",但这不太优雅,而且我确信 Raku 有一种惯用的方式来做到这一点。我想出的不优雅的替代方案是:
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
my %h = (1..5) Z=> (20..24);
say %h; # {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 => 24}
Z
元运算符将运算符作为其名称的一部分,默认为 ,
,因此默认创建列表。如果您添加 Pair
构造函数(又名胖逗号),那么您将创建一个 Pair
列表,您可以将其输入 Hash
.
另一种解决方案是 flat
十 Z
的结果:
my %h = flat (1..5) Z (20..24);