我在scala中有一张如下图所示的地图。
Map("x"-> "abc", "y"->"adc","z"->"abc", "l"-> "ert","h"->"dfg", "p"-> "adc")
我想要输出如下:
Map("abc"->["x","z"],"adc"->["y" , "p"], "ert"->"l", "dfg"->"h")
因此,输出将数组作为那些在初始映射中具有相同值的键的值。我怎样才能最佳地完成这项工作?
答案 0 :(得分:3)
一个groupBy
,然后对它输出的值进行一些操作。
scala> m.groupBy(x => x._2).mapValues(_.keys.toList)
res10: scala.collection.immutable.Map[String,List[String]]
= Map(abc -> List(x, z), dfg -> List(h), ert -> List(l), adc -> List(y, p))