如何总结基于元组的第一个元素?

use*_*091 5 scala tuples

我有一个3元组列表,如下所示[我为可读性添加了换行符]:

(2, 127, 3)
(12156, 127, 3)
(4409, 127, 2) <-- 4409 occurs 2x
(1312, 127, 12) <-- 1312 occurs 3x

(4409, 128, 1) <-- 
(12864, 128, 1)
(1312, 128, 1) <-- 
(2664, 128, 2)

(12865, 129, 1)
(183, 129, 1)
(12866, 129, 2)
(1312, 129, 10) <--
Run Code Online (Sandbox Code Playgroud)

我想根据第一个条目总结一下.第一个条目应该是唯一的.

结果应如下所示:

(2, 127, 3)
(12156, 127, 3)
(4409, 127, 3) <- new sum = 3
(1312, 127, 23) <- new sum = 23

(12864, 128, 1)
(2664, 128, 2)

(12865, 129, 1)
(183, 129, 1)
(12866, 129, 2)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Scala中实现这一目标?

Tom*_*icz 6

试试这个:

list groupBy {_._1} mapValues {v => (v.head._1, v.head._2, v map {_._3} sum)}
Run Code Online (Sandbox Code Playgroud)

保留中间条目,它始终采用输入列表中出现的第一个条目.