gpt4 book ai didi

arrays - 映射减少字符串中的总和项目权重

转载 作者:行者123 更新时间:2023-12-01 23:54:57 25 4
gpt4 key购买 nike

我有一个类似下面的字符串:

s =  "eggs 103.24,eggs 345.22,milk 231.25,widgets 123.11,milk 14.2" 

这样一对item和它对应的weights用逗号隔开,item name和它的weight用空格隔开。我想得到每个项目的权重总和:

//scala.collection.immutable.Map[String,Double] = Map(eggs -> 448.46, milk -> 245.45, widgets -> 123.11)

我已经完成了以下操作,但在分离元素及其重量的步骤上卡住了:

s.split(",").map(w=>(w,1)).sortWith(_._1 < _._1)

//Array[(String, Int)] = Array((eggs 345.22,1), (milk 14.2,1), (milk 231.25,1), (widgets 103.24,1), (widgets 123.11,1))

我想继续,对于数组中的每个元素,我需要用空格分隔项目名称和权重,但是当我尝试以下操作时,我感到很困惑:

  s.split(",").map(w=>(w,1)).sortWith(_._1 < _._1).map(w => w._1.split(" ") )
//Array[Array[String]] = Array(Array(eggs, 345.22), Array(milk, 14.2), Array(milk, 231.25), Array(widgets, 103.24), Array(widgets, 123.11))

我不确定下一步应该如何进行计算。

最佳答案

如果您保证字符串采用这种格式(因此没有异常和边缘情况处理),您可以这样做:

val s =  "eggs 103.24,eggs 345.22,milk 231.25,widgets 123.11,milk 14.2" 
val result = s
.split(",") // array of strings like "eggs 103.24"
.map(_.split(" ")) // sequence of arrays like ["egg", "103.24"]
.map { case Array(x, y) => (x, y.toFloat)} // convert to tuples (key, number)
.groupBy(_._1) // group by key
.map(t => (t._1, t._2.map(_._2).sum)) // process groups, results in Map(eggs -> 448.46, ...)

关于arrays - 映射减少字符串中的总和项目权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62923814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com