如何根据一些相似的属性来分离相似的元组?

How to separate similar tuples based on some similar attribute?

我有一个元组列表,如下所示:

val days= List(("Sunday", 1), ("Monday", 2), ("Tuesday", 1),
        ("Wednesday", 2), ("Thursday", 3), ("Friday", 2),
        ("Saturday", 3))

我希望最终结果如下所示:

"data": [
  [
    "Sunday, 1",
    "Tuesday, 1"
  ],
  [
    "Monday, 2",
    "Friday, 2"
    "Wednesday,2"
  ],
  [
    "Thursday, 3",
    "Saturday,3"
  ]
]

您可以分组然后映射值:

days.groupBy(_._2)
    .mapValues(_.map { case (name, nr) => s"$name, $nr" } )
    .valuesIterator.toList

结果是:

 List(List(Monday, 2, Wednesday, 2, Friday, 2), List(Sunday, 1, Tuesday, 1), List(Thursday, 3, Saturday, 3))

P.S.: 正如 Luis Miguel Mejía Suárez 建议的那样,使用 groupMap(来自 scala 2.13)可以使它更简洁和可读:

days.groupMap(_._2) { case (name, nr) => s"$name, $nr" }
    .valuesIterator.toList