arrays - Perl:基于特定列对具有多列的二维数组进行排序

标签 arrays perl perl-data-structures

伪代码:

my @unsortedArray = { ["Harry", 10], ["Tim", 8], ["Joe", 3]};
my @sortedArray = ?????

最终 sortedArray 应根据 col-2(整数)排序​​,注意与“人名”(col-1)的 1 对 1 关系。最终结果应如下所示:
sortedArray should be { ["Joe", 3], ["Tim", 8], ["Harry", 10] }; 

最佳答案

你可以给 sort 一个谓词,即:一个用于比较列表元素的函数。

my @unsorted = ( ["Harry", 10], ["Tim", 8], ["Joe", 3] );

my @sorted = sort { $a->[1] <=> $b->[1] } @unsorted;

在谓词(花括号中的表达式)中,$a$b是被比较的外部列表的元素。
sort只关心一维列表,所以它不会弄乱外部列表元素的内部结构。因此,姓名和号码之间的关系可以毫不费力地保留下来。

引用 perldoc -f sortperldoc perlop更多细节。

关于arrays - Perl:基于特定列对具有多列的二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318186/

相关文章:

arrays - 如何在 Perl 中创建一个哈希数组并遍历它们?

perl - Perl中的匿名哈希是什么?

arrays - 带有数组的 Fortran 子例程

perl - 如何设置GetOpt的默认值?

JavaScript - 声音不随随机值一起播放

perl - 为什么我要使用 Perl 匿名子例程而不是命名的子例程?

Perl - 汇总文件中的数据

perl - 使用 perl 脚本编辑帮助以在数组中的特定位置开始和停止

javascript - 如何根据第一个值对数组进行排序?

javascript - D3.js 中的数据操作