如何将scala列表转换为列表列表
下面是我的scala列表如何将scala列表转换为列表列表,scala,Scala,下面是我的scala列表 List((1409497202065,0.533), (1411804719,0.533), (1411804735,0.533), (1411811091,0.0)) 现在,我应该如何转换上面的列表以获得以下输出 List(List(1409497202065,0.533),List(1411804719,0.533), List(1411804735,0.533), List(1411811091,0.0)) 试试这个: myList.map(_.produc
List((1409497202065,0.533), (1411804719,0.533), (1411804735,0.533), (1411811091,0.0))
现在,我应该如何转换上面的列表以获得以下输出
List(List(1409497202065,0.533),List(1411804719,0.533), List(1411804735,0.533), List(1411811091,0.0))
试试这个:
myList.map(_.productIterator.toList)
scala> val myList = List((14,0.533), (14118,0.533), (1735,0.533), (1411,0.0))
myList: List[(Int, Double)] = List((14,0.533), (14118,0.533), (1735,0.533), (1411,0.0))
scala> myList.map(_.productIterator.toList)
res22: List[List[Any]] = List(List(14, 0.533), List(14118, 0.533), List(1735, 0.533), List(1411, 0.0))
productIterator.toList将元组转换为列表,但将类型更改为Any,因此,如果希望在JSON中序列化,必须:
myList.map(_.productIterator.map(_.toString).toList)
如果元组中的类型不一致,则可能需要库中的异构列表
如果您只希望列表中有一个字符串:
鉴于lst是前面提到的列表,您可以像这样直接映射它:
lst.map {
case (a, b) => List(a, b)
case _ => Nil // just in case you got some data that doesn't fit
}
这将生成一个如下所示的列表[List[Double]:
List(List(1409497202065.0,0.533),List(1411804719.0,0.533), List(1411804735.0,0.533), List(1411811091.0,0.0))
上述系统的美妙之处在于,它可以无限扩展;因为总是可以向匹配块添加更多案例
PS:列表中的第一个数字太大而不能是整数,这可以通过使用字符串BigNITS、long或双倍
< P>来确定简单性和可读性,考虑这一点对于Duple、给定列表A的理解。for ( (x,y) <- a ) yield List(x,y)
这也适用于可能为空的双工列表。myList.mapList?它创建如下列表List1409497202065,0.533,List1411804719,0.533,List1411804735,0.533,List1411811091,0.0Hi-Neu它工作正常,但有一个问题,当我在播放框架中将上面的列表解析为json时,找不到类型列表的json序列化程序[list[Long,Float]]我把Json.toJsonconvert转换成下面的形式,我认为对于长值,它可能不会解析,它应该如何在jsonI中解析我认为你应该编辑你的问题,我看不到Json功能,我也不知道如何回答这个问题,目前还不清楚你在问什么。也许你应该把它重命名为如何将scala的元组列表转换为列表列表。我认为以防万一,case是多余的,因为lst是list[Double,Double]类型,所以它不能包含任何非双元组对的内容。然后,我们可以把它写成一行字:@VladimirMatveev我喜欢掩盖我的底细;它包含的实际上是长的,双精度的,因为第一个数字不包含任何小数points@VladimirMatveev这只是因为我把它加进去,让它们都是双打;如果你看原始帖子,你会发现没有小数点
for ( (x,y) <- a ) yield List(x,y)