我有一个哈希哈希,如下所示:
%hash =(a => {b => 1,c => 2,d => 3},
a1 => {b => 11,c => 12,d => 13},
a2 => {b => 21,c => 22,d => 23})
我想提取“b”元素并将其放入数组中。现在,我正在遍历散列来执行此操作,但是我认为可以通过使用map来稍微提高效率。我很确定,如果这是一个散列数组,我会使用类似以下的内容:
@hasharray =({b => 1,c => 2,d => 3},
{b => 11,c => 12,d => 13},
{b => 21,c => 22,d => 23})
@array = map {($ _-> {b} => $ _)} @hasharray
如果我错了,请原谅我,我仍在学习map的工作原理。但是我想知道的是,我将如何映射散列的哈希?使用 map 甚至可能吗?我还没有找到任何这样做的例子。
更好的是,此代码中的下一步是对数组进行填充后对其进行排序。我很确定这是可能的,但是我对使用map自己弄清楚还不够聪明。我将如何一次性完成所有这些工作?
谢谢。
赛斯
最佳答案
这将提取并排序所有“b”:
my @array = sort { $a <=> $b } map $_->{b}, values %hash;
关于perl - 如何从哈希散列中映射(和排序)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585408/