【问题标题】:How to find unique elements from list of list of string based on some elements using scala?如何使用scala根据某些元素从字符串列表中查找唯一元素?
【发布时间】:2018-11-13 12:43:17
【问题描述】:

我想根据列表中的几个元素过滤列表列表。

 pritnln("databind = "datamap)

 dataBind = List((List(3,60,90,T3,T6),List(3,90,89,T32,T5),List(3,60,90,T5,T6), List(3,120,89,T32,T5))

我想根据每个列表中唯一的第一个元素过滤这个列表[列表[字符串]]。如果前三个元素重复,我不想得到它。

我的预期输出

List((List(3,60,90,T3,T6),List(3,90,89,T32,T5),List(3,120,89,T32,T5))

当我检查一些问题时,他们已用于元组列表

databind.groupBy(v => (v._1, v._2, v._3)).keys.ToList

我怎样才能为上述列表做到这一点?

【问题讨论】:

  • List((List(3,60,90,T3,T6),List(3,90,89,T32,T5),List(3,60,90,T5,T6), List(3,120,89,T32,T5)) 不是 List[List[String]]
  • @TerryDactyl 可能是 println(dataBind) 的输出,所以是“3”、“60”等
  • 是的,它是 println(databind) 的输出。 .我在不同列表中使用 zip 命令创建的数据绑定。
  • 还有一个无与伦比的(

标签: scala list scala-collections


【解决方案1】:

假设您的列表始终包含 3 个以上的元素:

scala> val l = List(List(1,2,3,4), List(2,3,4,5), List(1,2,3,5))
l: List[List[Int]] = List(List(1, 2, 3, 4), List(2, 3, 4, 5), List(1, 2, 3, 5))

scala> l.groupBy(_.take(3))
res1: scala.collection.immutable.Map[List[Int],List[List[Int]]] = Map(List(1, 2, 3) -> List(List(1, 2, 3, 4), List(1, 2, 3, 5)), List(2, 3, 4) -> List(List(2, 3, 4, 5)))

然后由您决定如何处理这些组。例如,如果您只想要具有唯一前 3 个元素的列表,则:

scala> res1.collect{ case (_, List(l)) => l}
res2: scala.collection.immutable.Iterable[List[Int]] = List(List(2, 3, 4, 5))

【讨论】:

    【解决方案2】:

    由于您想根据每个项目的前几个元素对列表进行分组,您可以执行以下操作:

    scala> val dataBind = List(List(3,60,90,"T3","T6"),List(3,90,89,"T32","T5"),List(3,60,90,"T5","T6"), List(3,120,89,"T32","T5"))
    dataBind: List[List[Any]] = List(List(3, 60, 90, T3, T6), List(3, 90, 89, T32, T5), List(3, 60, 90, T5, T6), List(3, 120, 89, T32, T5))
    scala> dataBind.groupBy(_.take(3)).mapValues(_.head).values.toList
    res8: List[List[Any]] = List(List(3, 120, 89, T32, T5), List(3, 60, 90, T3, T6), List(3, 90, 89, T32, T5))
    

    您可以在 mapValues 方法中指定您选择的转换以得出所需的结果。

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 2022-08-16
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多