Выполнять арифметику по списку в Scala - PullRequest
0 голосов
/ 03 ноября 2018

Я новичок в Scala, поэтому, пожалуйста, прости меня, если я наблюдаю за чем-то очень простым здесь. У меня есть следующее:

case class Record(
ID: String,
Count: Double)

List(Record("ID1",10.0),Record("ID1",60.0),Record("ID2",50.0),Record("ID3",100.0),Record("ID3",20.0),Record("ID3",10.0))

где x - это идентификатор, а y - количество в записи (x, y). Я могу напечатать этот список на консоль с println (records).

Я пытаюсь вывести следующее:

ID1,70.0
ID2,50.0
ID3,130.0

, который является суммой подсчета для каждой группы идентификаторов. Я хотел бы попробовать подход groupBy, но я пытаюсь проанализировать идентификатор каждой записи в моем списке, чтобы начать группировка счетов.

Например, я рассмотрел:

val grouped = records.groupBy(<some_logic_here>) 

но проблема в том, что объекты в списке обернуты в записи (x, y).

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018
case class Record(ID: String,
                    Count: Double)

  val records = List(Record("ID1", 10.0), Record("ID1", 60.0), Record("ID2", 50.0), Record("ID3", 100.0), Record("ID3", 20.0),
    Record("ID3", 10.0))

вот один вкладыш:

  val ans = records.groupBy(_.ID).mapValues(_.map(_.Count).sum)

  ans.foreach(x => println(s"${x._1},${x._2}"))
0 голосов
/ 03 ноября 2018
case class Record(ID: String, Count: Double)
List(Record("1", 12), Record("1", 13), Record("2", 13))
  .groupBy(_.ID)
  .map(e => Record(e._1, e._2.map(e => e.Count).sum))

Вам нужно указать groupBy (ID), а затем получить список, а затем вам нужно вычислить сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...