You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为元组添加排名序号?含排序规则与现有Scala代码

排序元组并添加排名序号的解决方案

问题说明

原始数据为以下元组集合:

("John", 23)
("Micheal", 8)
("Kathy", 8)
("Sam", 18)

需求:

  1. 先按数值(第二个元素)降序排序,数值相同时按名称(第一个元素)升序排序
  2. 为排序后的每个元组添加从0开始的前置排名序号,最终输出格式如下:
(0, John, 23)
(1, Sam, 18)
(2, Kathy, 8)
(3, Micheal, 8)

当前已实现排序逻辑:

data.sortBy(x => (-x._2, x._1))

完整解决方案

可以通过zipWithIndex方法为排序后的元素添加索引,再重组元组结构来实现需求,完整代码如下:

// 假设data是包含原始元组的集合(以List为例)
val data = List(("John", 23), ("Micheal", 8), ("Kathy", 8), ("Sam", 18))

// 排序 + 添加排名序号
val rankedData = data
  .sortBy(x => (-x._2, x._1))  // 按年龄降序、名称升序排序
  .zipWithIndex                // 为每个元素添加从0开始的索引
  .map { case ((name, age), idx) => (idx, name, age) }  // 重组为目标元组格式

// 打印结果
rankedData.foreach(println)

代码解释

  • zipWithIndex:会将排序后的每个元素与一个从0开始的整数索引配对,生成((名称, 年龄), 索引)格式的元组。
  • map阶段:通过模式匹配解构配对后的元组,将索引移到最前面,转换成你需要的(索引, 名称, 年龄)结构。

内容的提问来源于stack exchange,提问作者yxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:10:40