perl - 如何从哈希散列中映射(和排序)值?

标签 perl sorting map hash-of-hashes

我有一个哈希哈希,如下所示:

%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/

相关文章:

perl - 如何使用 ODBC 将 Perl 与 Excel 文件(*.xlsx 或 *.xls)连接起来?

perl - 使用 awk 或 perl 从 CSV 中提取特定列(解析)

javascript - Angular A-Z 反向排序

javascript - 如何显示图像 map 区域的轮廓(html、javascript)?

c++ - 如何插入 map 或 vector 以生成 json 字符串 (jsoncpp)

perl - CHECK 和 INIT block 怎么了?

c - 使用perl根据文件名+行号提取一行C代码

java流按属性对列表进行排序/过滤

php - Mysql复杂排序

ios - 为苹果 map 捕捉道路