如何过滤scala中的元组列表?

Sha*_*kti 0 scala tuples filter scala-collections

我在Scala中有以下列表,我希望根据一个标准进行过滤,如果有任何元组具有重复的第一个值,请从下面的示例中我想要排除

List((a,1), (a,2)) 
Run Code Online (Sandbox Code Playgroud)

因为它有"a"作为重复.

pag*_*_5b 5

你想过滤你的 result用一个只留下未触及那些没有重复"键"的列表的函数

result filter noDuplicateKeys
Run Code Online (Sandbox Code Playgroud)

此过滤功能必须采用对列表 List[(A,B)]并且仅当第一个元素对不存在于所有元素的其他位置时才返回true,并且可以实现为

def noDuplicateKeys[A, B](xs: List[(A, B)]) = 
    (xs groupBy (_._1)).values forall {_.size < 2}
Run Code Online (Sandbox Code Playgroud)

它将元素分组为一个Map键,其键是As,其值是相应的列表B与该键配对 s.

从此值开始,您只能接受大小不超过1的值