伪代码:
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 sort
和 perldoc perlop
更多细节。
关于arrays - Perl:基于特定列对具有多列的二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318186/