在scala中将元组列表缩减为单个元组
项是自定义类型。 我有很多对在scala中将元组列表缩减为单个元组,scala,tuples,Scala,Tuples,项是自定义类型。 我有很多对(项,项)。每对中的第一个元素都是相同的,因此我想将列表简化为一对类型(Item,Array[Item]) //list:Iterable[(项目,项目)] //第一次尝试 val res = list.foldLeft((null, Array[Item]()))((p1,p2) => { (p2._1, p1._2 :+ p2._2) } //第二次尝试 val r = list.unzip val res = (r._1.head,
(项,项)
。每对中的第一个元素都是相同的,因此我想将列表简化为一对类型(Item,Array[Item])
//list:Iterable[(项目,项目)]
//第一次尝试
val res = list.foldLeft((null, Array[Item]()))((p1,p2) => {
(p2._1, p1._2 :+ p2._2)
}
//第二次尝试
val r = list.unzip
val res = (r._1.head, r._2.toArray))
1。我不知道如何在第一个(“foldLeft”)解决方案中正确设置零值。有没有办法做这样的事
2.除了第二种解决方案,还有更好的方法将自定义对象元组列表简化为单个元组吗?如果您确定每对中的第一个元素都相同,为什么不使用该信息来简化
(list.head._1, list.map(_._2))
我应该做这项工作
如果存在第一个元素不同的其他情况,您可能希望尝试:
list.groupBy(_._1).map { case (common, lst) => (common, lst.map(_._2)) }
如果您确定每对中的第一个元素都是相同的,为什么不使用这些信息来简化呢
(list.head._1, list.map(_._2))
我应该做这项工作
如果存在第一个元素不同的其他情况,您可能希望尝试:
list.groupBy(_._1).map { case (common, lst) => (common, lst.map(_._2)) }
(list.head.\u1,list.map(\u2))
?(list.head.\u1,list.map(\u2))
?