【问题标题】:Extract second tuple element in list of tuples提取元组列表中的第二个元组元素
【发布时间】:2013-04-29 16:14:32
【问题描述】:

我有一个 Map,其中每个值都是元组列表,例如:

List(('a',1), ('b', 4), ('c', 3)....)

改变每个值的最简单的方式是什么仍然是一个 LIst 但只是每个元组的第二个元素

List(1,4,3)

我试过了

myMap.mapValues(x => x._2)

我明白了

error: value _2 is not a member of List[(Char, Integer)]

有什么建议吗?

【问题讨论】:

    标签: scala map tuples


    【解决方案1】:

    试试这个:

        myMap.mapValues(_.map(_._2))
    

    传递给mapValues 的值是List[(Char,Integer)],因此您必须进一步将其映射到元组的第二个元素。

    【讨论】:

      【解决方案2】:

      这对你有用吗?

      val a = List(('a',1), ('b', 4), ('c', 3))
      a.map(_._2)
      

      【讨论】:

        【解决方案3】:

        请注意,mapValues() 返回 myMap 上的视图。如果 myMap 是可变的并且被修改了,那么相应的变化就会出现在 mapValues 返回的地图中。如果您真的不想要转换后的原始地图,您可能需要使用 map() 而不是 mapValues():

        myMap.map(pair => (pair._1, pair._2.map(_._2)))
        

        【讨论】:

          【解决方案4】:

          另一种方法是使用unzip,它将元组列表转换为列表元组。如果您确实需要元组中的两个值,则它特别有用。

          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)
          

          【讨论】:

            猜你喜欢
            • 2018-11-02
            • 1970-01-01
            • 1970-01-01
            • 2020-02-28
            • 1970-01-01
            • 2019-11-25
            • 1970-01-01
            • 2011-03-19
            • 1970-01-01
            相关资源
            最近更新 更多