首页 > 解决方案 > Scala列表列表中元素的出现次数

问题描述

为了简单起见,假设我有以下输入:

List(List("A", "A"), List("A", "B"), List("B", "C"), List("B", "C"))

怎么可能以这种方式对列表中的元素进行分组,以便我知道它们中有多少个列表。例如,跟随mapValues函数的输出只是为了说明我的意思,前一个输入的结果应该是这样的:

Map("A" -> 2, "B" -> 3, "C" -> 2)

为了确保我明确了我的意思,解释结果的一种方法是说“A”出现在 2 个子列表中(无论它在特定子列表中出现多少次) ,“B”出现在 3 个子列表中,“C”出现在 2 个中。我只是想要一种方法来映射每个单独的元素存在多少个不同的子列表。

标签: scalalistfunctional-programming

解决方案


不考虑性能,这将起作用:

val list = List(List("A", "A"), List("A", "B"), List("B", "C"), List("B", "C"))
val elements = list.flatten.distinct
elements.map(el => el -> list.count(_.contains(el))).toMap

推荐阅读