Название вопроса, вероятно, сбивает с толку, так что, надеюсь, мой пример кода будет иметь больше смысла.
Но в принципе, если бы я группировал по набору значений, если это значение не появилось всписок, это не признается. В приведенном ниже примере я пытался найти способ заставить группу распознать, что существует три варианта группирования имен. Но в месяце "2" Фрэнк не появляется, поэтому он не входит в группу.
Я просматривал документы Scala, пытаясь найти способ пройти в список "группы". ценностями ", но я не уверен, существует ли он.
Буду признателен за любые советы о том, как с этим справиться!
Кроме того, к вашему сведению, первое ТАК сообщение, извините, если я что-то забыл. Кроме того, я новичок в Scala, поэтому некоторые из приведенного ниже кода могут быть уродливы, чтобы посмотреть на
(Использование Scala 2.13.1)
ПРИМЕРНЫЙ КОД:
case class Sale (
month: String,
name: String,
amt: Double
)
val sales: List[Sale] = List(
Sale("1","Bob",12),
Sale("1","Bob",15),
Sale("1","Frank",20),
Sale("1","Joe",10),
Sale("2","Bob",5),
Sale("2","Joe",10)
)
sales.groupBy(_.month).map { case (month, monthSales) =>
monthSales.groupBy(_.name).map { case (name, nameSales) =>
val totalSales = nameSales.map(_.amt).sum
println(s"$month $name $totalSales")
}
}
ВЫХОД:
2 Bob 5.0
2 Joe 10.0
1 Bob 27.0
1 Joe 10.0
1 Frank 20.0
Желаемый выход:
2 Bob 5.0
2 Joe 10.0
2 Frank 0.0
1 Bob 27.0
1 Joe 10.0
1 Frank 20.0