通过scala中的地图的键功能进行聚合/缩小

时间:2017-01-20 06:38:22

标签: scala dictionary hashmap

我在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")

因此,输出将数组作为那些在初始映射中具有相同值的键的值。我怎样才能最佳地完成这项工作?

1 个答案:

答案 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))