gpt4 book ai didi

perl - 在 Perl 中根据一项的值对二维数组进行排序,但有异常(exception)

转载 作者:行者123 更新时间:2023-12-02 22:45:06 25 4
gpt4 key购买 nike

目前,我正在处理一个包含足球进球信息的二维数组。第一个数组中的每个项目都是一个包含有关目标的不同信息的数组。该数组中的第二项是得分分钟 (1-90),因为我希望它们按顺序排列,以便我可以确定他们的得分线。我使用“分钟”值进行排序:

@allinfogoals = sort { $a->[1] <=> $b->[1] } @allinfogoals;

这非常有效,直到我遇到在加时赛中进球的情况。这些分钟显示为“90+2”或“45+3”。现在,我可以将它们添加在一起,但这可能会使顺序不正确。在这种情况下,半场结束前进球可以存储为下半场开始后不久进球后进球。

所以,我找到了具有 90+x 格式的分钟,并在“+”处将它们分开。我将第一个值存储在数组中定期存储分钟的位置,但我在数组末尾添加了另一个值(第 12 项),并将第二部分(加时赛分钟数)放在那里。如果是常规目标,则为 0。

如何修改上面的排序以补偿这一点并使其保持正确的顺序?

最佳答案

听起来您想首先对一个键进行排序,如果该键相同,那么您想对第二个键进行排序。

例如您希望 45+2 在 45 和 46 之间排序。

您只需使用以下命令即可做到这一点:

@ls = sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } @ls

只有当第一个 key 相同时,才会引用第二个 key 。

这是一个完整的示例:

my @allinfogoals=(
[ 46, 0 ],
[ 45, 2 ],
[ 45, 0 ],
[ 33, 0 ],
[ 91, 0 ],
[ 90, 2 ],
);

@allinfogoals=sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } @allinfogoals;

use Data::Dump; dd \@allinfogoals;

输出是:

[[33, 0], [45, 0], [45, 2], [46, 0], [90, 2], [91, 0]]

关于perl - 在 Perl 中根据一项的值对二维数组进行排序,但有异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com