Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala中的元组列表上使用groupBy_Scala - Fatal编程技术网

在Scala中的元组列表上使用groupBy

在Scala中的元组列表上使用groupBy,scala,Scala,我试图在Scala中将元组列表分组 输入: val a = List((1,"a"), (2,"b"), (3,"c"), (1,"A"), (2,"B")) 我申请: a.groupBy(e => e._1) 我得到的结果是: Map[Int,List[(Int, String)]] = Map(2 -> List((2,b), (2,B)), 1 -> List((1,a), (1,A)), 3 -> List((3,c))) 这与我的预期略有不同: Map[I

我试图在Scala中将元组列表分组

输入:

val a = List((1,"a"), (2,"b"), (3,"c"), (1,"A"), (2,"B"))
我申请:

a.groupBy(e => e._1)
我得到的结果是:

Map[Int,List[(Int, String)]] = Map(2 -> List((2,b), (2,B)), 1 -> List((1,a), (1,A)), 3 -> List((3,c)))
这与我的预期略有不同:

Map[Int,List[(Int, String)]] = Map(2 -> List(b, B), 1 -> List(a, A)), 3 -> List(c))

要获得预期的输出,我可以做些什么?

您的意思可能是:

a.groupBy(_._1).mapValues(_.map(_._2))
或:

结果:

Map(2 -> List(b, B), 1 -> List(a, A), 3 -> List(c))

如果您不想使用mapValues,这是您所期望的吗

 a.groupBy(_._1).map(f => (f._1, f._2.map(_._2)))
结果

Map(2 -> List(b, B), 1 -> List(a, A), 3 -> List(c))

令人惊讶的是,被接受的答案并没有完全回答实际问题。谢谢。这符合我的目的。有没有其他方法可以应用groupBy来避免使用mapValues?@ZZZ因为
List[A]
上的
groupBy
将返回
Map[K,List[A]
,似乎没有办法,因为
List[(X,Y)]
将始终转换为
Map[K,List[(X,Y)]
而不是
Map[K,List[Y]
。因此,不,您必须
mapValues
。我添加了另一个,希望更美观的变体。
Map(2 -> List(b, B), 1 -> List(a, A), 3 -> List(c))