Scala 统计不同省份商品点击总数并按升序排序

问题描述:

根据不同省份的商品点击数据,完成对不同省份商品的点击总数进行统计并按升序进行排序输出。

**数据格式:**scalaval data = Map((('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7) )

**输出结果:**scalaMap(河南 -> 30, 吉林 -> 19, 河北 -> 16)List((河北,16), (吉林,19), (河南,30))

**代码实现:**scalaval data = Map((('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7) )

val newData = data.map{case ((province, item), count) => (province, (item, count))} .groupBy(.1) .mapValues(.map(._2).reduce((x, y) => (x._1 + y._1, x._2 + y.2))) .toList .sortBy(._2._2)

val result1 = newData.toMapval result2 = newData.map{case (province, (_, count)) => (province, count)}

println(result1)println(result2)

代码解释:

  1. 数据转换: - data.map{case ((province, item), count) => (province, (item, count))}: 将原始数据格式转换为 (省份, (商品, 点击次数)) 的格式。2. 分组: - .groupBy(_._1): 根据省份进行分组。3. 统计: - .mapValues(_.map(_._2).reduce((x, y) => (x._1 + y._1, x._2 + y._2))): 对每个省份的商品点击次数进行累加,得到每个省份的总点击次数。4. 排序: - .toList.sortBy(_._2._2): 将结果转换为列表,并根据点击总数进行升序排序。5. 输出结果: - result1: 以 Map 的形式输出省份和点击总数。 - result2: 以 List 的形式输出省份和点击总数,并按照点击总数升序排序。

总结:

该代码通过数据转换、分组、统计和排序四个步骤,实现了对不同省份商品点击总数的统计和升序排序。代码简洁易懂,易于理解和维

Scala 统计不同省份商品点击总数并排序 - 详细代码示例

原文地址: https://www.cveoy.top/t/topic/kwp0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录