哈希的排序哈希的元素限制

时间:2018-05-04 10:56:03

标签: perl

我想根据其中一个键的值对哈希值进行排序,并打印出5个最佳结果。我试着用它做,但不幸的是它失败了。

示例值

key1 = 1
key2 = 2
key3 = 3
key4 = 4
key5 = 5
key6 = 6
key7 = 7

我的尝试:

my limit = 5;
while (my $keys (sort {$hoh{$b}{aaaa}<=>$hoh{$a}{aaaa}) && my $i <= $limit) {
  $i++;
  print "KEY: $keys VALUE1: $hoh{$keys}->{aaaa} VALUE2: $top_strategies{$keys}->{bbbb}   \n";
}

预期结果:

KEY: key1 VALUE1: 1 VALUE2: 3213
KEY: key2 VALUE1: 2 VALUE2: 312
KEY: key3 VALUE1: 3 VALUE2: 41
KEY: key4 VALUE1: 4 VALUE2: 414123
KEY: key5 VALUE1: 5 VALUE2: 532

我的结果:

syntax error at backtest.pl line 252, near "$keys ("
syntax error at backtest.pl line 252, near "}<=>"

我做错了什么?或者还有其他解决办法吗?

1 个答案:

答案 0 :(得分:0)

您不希望使用content(nl2br("New Product is here \n" .$product->title)) 循环,因为它会反复“旋转”。你的排序。当条件为&#34;为真时,while会反复运行。多次重新整理你的清单并不是你想要做的。

此外,当您对某些内容进行排序时,您需要指定要排序的内容。您已经告诉sort使用子例程(比较while个元素),但没有指定基于该比较的 进行排序。您可能想要对$hoh进行排序。

首先对列表进行排序,然后抓取前5个元素。

您可以使用&#39; for&#39;循环:

keys %hoh