perl – 在scala中创建和累积Map的Map Map

perl – 在scala中创建和累积Map的Map Map,第1张

概述我有一个包含Salesman,Product,Location,SalesValue数据的文件 例如: Bob, Carrots, United States, 200Bill, Potatoes, England, 100Bob, Oranges, England, 50Bob, Carrots, United States, 20 可以使用以下代码将SalesValue简洁地累积到per 我有一个包含Salesman,Product,Location,SalesValue数据的文件

例如:

Bob,Carrots,United States,200Bill,Potatoes,England,100Bob,Oranges,50Bob,20@H_404_14@  

可以使用以下代码将SalesValue简洁地累积到perl中的哈希哈希值中

while(<>){    @cols = split(/,/);    $vals {$cols[0]} {$cols[1]} {$cols[2]} += $cols[3];}@H_404_14@  

有没有人有任何建议如何创建地图地图的地图,加上积累,最好在scala中实现?

解决方法 我建议将这些地图合并为一个monoID-append *** 作.

首先,我们将地图地图的地图创建为单个元素:

val input = """Bob,200              |Bill,100              |Bob,50              |Bob,20""".stripmargin.lines.toListval mmm = input.map(_.split(","))               .map { case Array(n,g,c,v) => Map(n -> Map(g -> Map(c -> v.toInt))) }@H_404_14@  

mmm的类型为List [Map [String,Map [String,Int]]]]:

List[Map[String,Map[String,Int]]]]@H_404_14@  

然后我们可以使用像scalaz或cat这样的库来汇总:

import scalaz._,Scalaz._println(mmm.suml)@H_404_14@  

这将打印(未提供):

Map(Bill -> Map(Potatoes -> Map(England -> 100)),Bob  -> Map(Oranges  -> Map(England -> 50),Carrots  -> Map(United States -> 220)))@H_404_14@  

为了帮助理解.suml *** 作背后发生的事情,我会无耻地建议查看我去年制作的演示文稿https://speakerdeck.com/filippovitale/will-it-blend-scalasyd-february-2015

编辑

我们还可以看到我们的地图地图地图可折叠,并使用foldMap获得相同的结果:

input.map(_.split(","))     .foldMap{ case Array(n,v) => Map(n -> Map(g -> Map(c -> v.toInt))) }@H_404_14@                            	          总结       

以上是内存溢出为你收集整理的perl – 在scala中创建和累积Map的Map Map全部内容,希望文章能够帮你解决perl – 在scala中创建和累积Map的Map Map所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1255562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存