作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含类似内容的列表:
val lines: List[String] = List("bla blub -- id_1", "sdkfjdf -- id_2", "blubber blab -- id_1", "foo -- id_3", "ieriuer -- id_2", "bar -- id_3")
所以基本上这个列表包含一个恰好出现两次的标识符 (id_x) 和一个属于其中一个标识符的字符串。
我想将该列表拆分为两个列表,然后每个列表包含一组唯一的 id_s 及其所属的字符串,如下所示:
l1("bla blub -- id_1", "sdkfjdf -- id_2", "foo -- id_3")
l2("blubber blab -- id_1", "ieriuer -- id_2", "bar -- id_3")
我该如何以实用的方式做到这一点?
最好的问候,斯文
最佳答案
lines.groupBy(_.split(" -- ")(1)).toList.map(_._2).transpose
这是完成它的粗略和现成的方法;实际上,如果您想对这些数据做更多的事情,最好将这些项目解析为一个案例类,a la:
case class Item(id: String, text: String)
val items = for {
line <- lines
Array(text, id) = line.split(" -- ")
} yield Item(id, text)
然后和上面一样做,除了groupBy(_.id)
,还有方便的sortBy(_.id)
。
关于list - 在 Scala 中将一个列表拆分为两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18114139/
我是一名优秀的程序员,十分优秀!