scala - 如何使用scala基于某些元素从元组列表中查找唯一元素?

标签 scala

我有以下 list

val a = List(("name1","add1","city1",10),("name1","add1","city1",10),

("name2","add2","city2",10),("name2","add2","city2",20),("name3","add3","city3",20))

我想要基于元组的前三个值从上面的列表中获取不同的元素。从列表中查找不同元素时不应考虑第四个值。

我想要以下输出:
val output = List(("name1","add1","city1",10),("name2","add2","city2",10),

("name3","add3","city3",20))

是否有可能获得以上输出?

据我所知,distinct如果整个元组/值重复,则有效。我试过 distinct喜欢以下 :
val b = List(("name1","add1","city1",10),("name1","add1","city1",10),("name2","add2","city2",10),
("name2","add2","city2",20),("name3","add3","city3",20)).distinct

但它给出的输出为 -
List(("name1","add1","city1",10),("name2","add2","city2",10),
("name2","add2","city2",20),("name3","add3","city3",20))

任何替代方法也将不胜感激。

最佳答案

使用 groupBy像这样

a.groupBy( v => (v._1,v._2,v._3)).keys.toList

这构造了一个 Map其中每个键根据定义是上面 lambda 函数中要求的唯一三元组。

如果它还包含元组中的最后一个元素,则为每个键获取第一个元素,如下所示
a.groupBy( v => (v._1,v._2,v._3)).mapValues(_.head)

关于scala - 如何使用scala基于某些元素从元组列表中查找唯一元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956577/

相关文章:

json - 使用 json4s 从 json 字符串中提取键

scala - 如何调试akka关联进程?

scala - 如何在 Function1 或 PartialFunction 上实现加宽函数

string - 无法使用 | 拆分字符串

scala - .scala 文件的 spark-submit

Scala 不可变对象(immutable对象)和具有 val 字段的特征

scala - 如何计算由 Spark 中的 (Key, [Value]) 对组成的 RDD 中每对的平均值?

scala - 玩转 2.0 Scala 和异步回调

scala - 简单 Play 应用程序的最小 RAM

mongodb - MongoDB 上的并发读取操作