我有一个我正在调用 groupBy 的 Pairs 列表。但是, groupBy 在值中包含该对的两个部分,我只想包含该对中未“分组依据”的部分。
List(1->2, 1->3, 2->3) groupBy (_._1)
scala.collection.immutable.Map[Int,List[(Int, Int)]] = Map(1 -> List((1,2), (1,3)), 2 -> List((2,3) ))
我写了一个方法来映射 Map 条目并删除重复键:
def removeDupeKeyFromPair[A, B](m: Map[A, List[Pair[A, B]]]): Map[A, List[B]] =
m map { case(k, vlist) => k -> { vlist map { case(dupe, b) => b } } }
但是,我想将其概括List[Pair[A,B]]
为C[Pair[A,B]]
where C<:Iterable
,所以我尝试了
def removeDupeKeyFromPair[A, B, C[Pair[A, B]] <: Iterable[Pair[A, B]]]
(m: Map[A, C[Pair[A, B]]]): Map[A, C[B]]
但这产生了
错误:B 没有类型参数,预期:两个
如何正确表达这些类型?
编辑: 这对我来说是一个学习练习,所以我对如何正确表达给定类型更感兴趣,而不是寻找另一个解决方案。尽管了解其他解决方案也很棒。