斯卡拉总和列表的列表

时间:2013-11-21 02:14:55

标签: scala map sum reduce

我有这样的结构:

List(
   Model("Name" -> "first"
         "Items" -> Map("a"->1,"b"->2)),
   Model("Name" -> "Second",
         "Items" -> Map("d"->2,"e"->3)))

我正在努力获得以下项目的总和:

List(
   Model("Name" -> "first"
         "Items" -> 3,
   Model("Name" -> "Second",
          "Items" -> 5)

我知道如何以简短的scala方式做到这一点吗?

感谢

1 个答案:

答案 0 :(得分:3)

假设Modelscala.Product的子类型,这样的事情就可以解决问题。

modelList.map { m =>
  m.copy(
    items = m.items.values.foldLeft(0) { _ + _ }
  )
}