【问题标题】:Reduce list of tuples to a single tuple in scala将元组列表减少为scala中的单个元组
【发布时间】:2017-09-11 03:04:29
【问题描述】:

Item 是一种自定义类型。 我有一对可迭代的 (Item, Item)。每对中的第一个元素都是相同的,所以我想将列表减少为一对(Item, Array[Item])

//list: Iterable[(Item, Item)]

//第一次尝试

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))?

标签: scala tuples


【解决方案1】:

如果您确定每对中的第一个元素相同,为什么不使用该信息进行简化?

(list.head._1, list.map(_._2))

应该做的工作

如果还有其他第一个元素不同的情况,你不妨试试:

list.groupBy(_._1).map { case (common, lst) => (common, lst.map(_._2)) }

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2014-07-01
    • 2015-02-13
    • 2014-12-04
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2014-10-13
    • 2022-07-06
    相关资源
    最近更新 更多