【问题标题】:How to groupBy using multiple columns in scala collections如何在 scala 集合中使用多个列进行分组
【发布时间】:2015-10-06 17:35:57
【问题描述】:
records.groupBy(_.column1)

如果我想包含更多列,例如按 column1、column2 和 column3 分组,该怎么办?

有什么提示吗?

【问题讨论】:

  • 你的问题不是很清楚。可以举个例子吗?
  • 查看我的记录是包含 column1 、 column2 、 column3 等的记录列表。我想使用 groupby column1, column2 按结果分组
  • 我看不到什么是多列分组,我要求的是具体示例
  • RawData 包含名称、课程等列 val data = records.asInstanceOf[List[RawData]] val finalResult = data.groupBy(_.name)
  • Arg,这仍然不是一个例子!你能给出一个输入、一个查询和你的预期输出吗?你知道,这是给你的:你的问题越清楚,你就会越早得到答案

标签: scala collections


【解决方案1】:

试试

records.groupBy(record => (record.column1, record.column2, record.column3))

这将按由这 3 列组成的元组进行分组。

【讨论】:

  • 谢谢,这似乎对我有用。我看到的所有例子都只使用了 1 个分组,我不知道如何使用多列。你能指出我周围的一些基础知识,以便我能更好地理解这一点。也感谢@Dici 抱歉无法粘贴确切的代码库。
  • 作为基本解释。使用 groupBy 时,您提供了一个函数,该函数接收一个被调用的类型的项目,并返回一个表示它应该进入的组的项目。 groupBy 迭代构建新集合的所有元素。例如。如果您有两个带有字段 col1、col2、col3 的 Record 对象 - 第一个值为“a”、“b”、“c”,第二个值为“a”、“b”、“x”。第一个将返回一个元组(“a”、“b”、“c”),然后将其放入自己的组中。第二个将返回一个元组(“a”,“b”,“x”),它与第一个元组不同,因此进入它自己的组。
  • recordrecords有什么区别?
  • 您无法从提供的代码子集中分辨出来,但推测 records 是某种 List[Record] 对象,这将使 record 成为 Record 对象。 IE。 groupBy 正在对列表内的项目进行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2012-11-22
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多