Scala 提取元组列表中的第二个元组元素
我有一个映射,其中每个值都是元组列表,例如:Scala 提取元组列表中的第二个元组元素,scala,map,tuples,Scala,Map,Tuples,我有一个映射,其中每个值都是元组列表,例如: List(('a',1), ('b', 4), ('c', 3)....) 更改每个值最具规模的方法仍然是一个列表,但它只是每个元组的第二个元素 List(1,4,3) 我试过了 myMap.mapValues(x => x._2) 我得到 error: value _2 is not a member of List[(Char, Integer)] 有什么建议吗?试试这个: myMap.mapValues(_.map(_._
List(('a',1), ('b', 4), ('c', 3)....)
更改每个值最具规模的方法仍然是一个列表,但它只是每个元组的第二个元素
List(1,4,3)
我试过了
myMap.mapValues(x => x._2)
我得到
error: value _2 is not a member of List[(Char, Integer)]
有什么建议吗?试试这个:
myMap.mapValues(_.map(_._2))
传递给mapValues
的值是一个列表[(Char,Integer)]
,因此您必须进一步将其映射到元组的第二个元素。请注意,mapValues()返回myMap上的视图。如果myMap是可变的并已修改,则相应的更改将显示在mapValues返回的映射中。如果转换后确实不需要原始贴图,则可能需要使用map()而不是mapValues():
那对你有用吗
val a = List(('a',1), ('b', 4), ('c', 3))
a.map(_._2)
另一种方法是使用
解压
,将元组列表转换为列表元组。如果您实际上希望从元组中同时获取这两个值,那么它尤其有用
val list = List(('a',1), ('b', 4), ('c', 3))
val (letters, numbers) = list.unzip
// letters: List[Char] = List(a, b, c)
// numbers: List[Int] = List(1, 4, 3)
val list = List(('a',1), ('b', 4), ('c', 3))
val (letters, numbers) = list.unzip
// letters: List[Char] = List(a, b, c)
// numbers: List[Int] = List(1, 4, 3)