scala - 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 个中。我只是想要一种方法来映射每个单独的元素存在多少个不同的子列表。
解决方案
不考虑性能,这将起作用:
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
推荐阅读
- python - docker 中的 Fitz (ModuleNotFoundError: No module named 'frontend') 错误
- node.js - 如何使用 Node.js 和 Sinon 模拟 Mongo 光标对象
- bert-language-model - 罗伯塔为不同的任务重新调整微调模型
- sql - Laravel/Ajax:选择具有不同 id 但相同 group_id 的行显示不同的值
- bash - 如何将整个命令存储在 bash 变量中并以有限的分词方式逐字执行它们?
- python-3.x - Python从xml中删除标签br和其他标签
- windows - Jenkins '/' 转义字符在与环境变量结合使用时不起作用
- swiftui - SwiftUI 结合观察更新
- windows - 在代理后面设置 Flutter(需要 407 代理身份验证)
- keycloak - 带开源 IDP 的 Spring Cloud Gateway