scala - 处理 Set of Sets 并返回一个扁平的 Iterable

标签 scala functional-programming yield loops

val input=Set(Set("a","b"),Set("b","c"))

我要这个:
Map("a"->1,"b"->2,"c"->1)

实现此类功能的最佳功能方法是什么?
在嵌套的 Iterables 中使用 yield 关键字结果:
output = for(firstlevel<-input) yield for(item<-firstlevel) yield item

最佳答案

更新:纳入了使用建议 input.toSeq.flatten而不是 input.toSeq flatMap { _.toSeq }
转换为单个值序列...

input.toSeq.flatten

...匹配的组值...
input.toSeq.flatten groupBy { identity }

...并数数
input.toSeq.flatten groupBy { identity } mapValues { _.size }

关于scala - 处理 Set of Sets 并返回一个扁平的 Iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746610/

相关文章:

scala - 使用 IntelliJ 处理多个相互依赖的 SBT 项目

scala - scalaz 中更像 haskell 的应用语法

f# - 尝试使用连续传递样式来避免使用 minimax 算法的堆栈溢出

ruby - 如何计算迭代器调用 yield 的次数?

Python asyncio、futures 和 yield from

java - 立即将 Spark 中的 Json 字符串索引到 Elasticsearch

scala - SBT 抛出 java.io.FileNotFoundException : (Permission denied) on project folder

functional-programming - 在函数式编程中,什么是仿函数?

reactjs - 如何在 react 功能组件中进行超时然后清除超时?

c# - 这个带有 "yield"的函数如何详细工作?