Scala:建立一对多关系

Mat*_*oob 2 scala

我有:

val intsPerChar: List[(Char, List[Int])] = List(
  'A' -> List(1,2,3),
  'B' -> List(2,3)
)
Run Code Online (Sandbox Code Playgroud)

我想用它们具有映射关系的字符获取整数的映射关系。即,我想得到:

val charsPerInt: Map[Int, List[Char]] = Map(
  1 -> List('A'),
  2 -> List('A', 'B'),
  3 -> List('A', 'B')
)
Run Code Online (Sandbox Code Playgroud)

目前,我正在执行以下操作:

val numbers: List[Int] = l.flatMap(_._2).distinct
numbers.map( n =>
  n -> l.filter(_._2.contains(n)).map(_._1)
).toMap
Run Code Online (Sandbox Code Playgroud)

是否有一种不太明确的方法?理想的是某种groupBy

Dmy*_*tin 5

尝试

intsPerChar
  .flatMap { case (c, ns) => ns.map((_, c)) }
  .groupBy(_._1)
  .mapValues(_.map(_._2))  
// Map(2 -> List(A, B), 1 -> List(A), 3 -> List(A, B))
Run Code Online (Sandbox Code Playgroud)