首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala:如何扁平一组文件的列表

Scala:如何扁平一组文件的列表
EN

Stack Overflow用户
提问于 2015-04-01 13:02:24
回答 4查看 157关注 0票数 0

我有一个List[Set[Path]]

更新:集合中的每条路径都是唯一的,并表示特定的目录位置。没有副本。所以,我要找的是路径元素/

代码语言:javascript
复制
val miceData = List(Set(C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test7.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test2.txt,     C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test6.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test5.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test8.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test3.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\aPowerPoint.pptx,     C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test1.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory\Test4.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test10.txt),    Set(C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test6.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test3.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test4.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test70.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test8.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test5.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\DeeplyNestedDirectory\FlatDirectory2\Test2.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test2.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test3.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test1.txt), Set(C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test80.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test7.txt, C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test40.txt, C:\Users\lulu\Documents\GitHub\data_mining_folder\FlatDirectory\Test6.txt,     C:\Users\lulu\Documents\mice_data\data_mining_folder\FlatDirectory\Test5.txt), Set(C:\Users\lulu\Documents\mice_data\data_mining_folder\zipfile.zip), Set(C:\Users\lulu\Documents\mice_data\data_mining_folder\micetest.txt,C:\Users\lulu\Documents\mice_data\data_mining_folder\riley.jpg))

在这个Sets中有5个List,每个Set持有Path(s)。如果我计算正确的话,这类Paths的总数是28。

现在,我想了解Path元素在这个List中的所有Sets中的总数。

我本可以在代码上游的某个区域完成此计算,但我现在很想这么做,并在此过程中了解Scala的更多信息。

类似于:

代码语言:javascript
复制
val totalPaths = <<iterate over this List and count all the paths>>

我想要最短的,最惯用的代码来完成这一点。

EN

回答 4

Stack Overflow用户

发布于 2015-04-01 13:08:29

代码语言:javascript
复制
val totalPaths = miceData.map(_.size).sum

如果您有副本,您可以:

代码语言:javascript
复制
val totalPaths = miceData.flatten.distinct.size
票数 2
EN

Stack Overflow用户

发布于 2015-04-01 13:08:37

代码语言:javascript
复制
val paths = for {              //gives you a list of all paths on all sets
    set <- miceData
    path <- set
   } yield path


val totalPaths = paths.toSet.size    // converting it to set will remove duplicates if any
票数 2
EN

Stack Overflow用户

发布于 2015-04-01 13:11:25

我觉得扁平化就足够了

代码语言:javascript
复制
val toto = List(Set(1,2,3), Set(6,7,8))
println(toto.flatten.count)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29391573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档