Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Perl哈希从最大到最小排序_Perl_Hash_Perl Hash - Fatal编程技术网

将Perl哈希从最大到最小排序

将Perl哈希从最大到最小排序,perl,hash,perl-hash,Perl,Hash,Perl Hash,我正在看下面的一个例子: 它给出了根据每个键的值对哈希进行排序的代码: # Using <=> instead of cmp because of the numbers foreach my $fruit (sort {$data{$a} <=> $data{$b}} keys %data) { print $fruit . ": " . $data{$fruit} . "\n"; } #由于数字原因,使用而不是cmp foreach

我正在看下面的一个例子:

它给出了根据每个键的值对哈希进行排序的代码:

# Using <=> instead of cmp because of the numbers
    foreach my $fruit (sort {$data{$a} <=> $data{$b}} keys %data) {
        print $fruit . ": " . $data{$fruit} . "\n";
    }
#由于数字原因,使用而不是cmp
foreach my$fruit(排序{$data{$a}$data{$b}}键%data){
打印$FROUT。“:”$data{$FROUT}。“\n”;
}

我不完全理解这段代码,但当我尝试使用它时,它从最低到最高排序。如何将其从最高到最低翻转排序?

交换
$a
$b

foreach my $fruit (sort {$data{$b} <=> $data{$a}} keys %data) {
foreach my$fruit(排序{$data{$b}$data{$a}}键%data){

只需使用
反向排序
而不是
排序


foreach my$fruit(反向排序键%data){…

这是可行的,但是排序然后反转列表比一开始就交换比较的意义效率要低。@MarkReed:这似乎声称
reverse
的效率并没有降低:@MarkReed:
reverse
的效率更高,代码更可读。@toolic:有趣,我不知道。我想知道如果优化扩展到比较
$data{$a}
$data{$b}
,而不仅仅是
$a
$b