加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

基于一个项的值对Perl中的二维数组进行排序,但有异常

发布时间:2020-12-16 06:18:51 所属栏目:大数据 来源:网络整理
导读:目前,我正在使用二维数组,其中包含有关足球进球的信息.第一个数组中的每个项目都是一个数组,其中包含有关目标的不同信息.这个数组中的第二项是得分(1-90),因为我想按顺序排列它们,所以我可以确定它们是什么作出了得分线.我正在使用’分钟’值来对此进行排序
目前,我正在使用二维数组,其中包含有关足球进球的信息.第一个数组中的每个项目都是一个数组,其中包含有关目标的不同信息.这个数组中的第二项是得分(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

仅当第一个键相同时,才查询第二个键.

这是一个完整的例子:

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

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

use Data::Dump; dd @allinfogoals;

输出是:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读