首页 文章

如何使用scala组合两个列表的元素?

提问于
浏览
-6

我有以下列表:

val list1 = List(
    (List("pune"),"myname1","myId1", "myAdd1"),
    (List("pune"),"myname2","myId2", "myAdd1"),
    (List("pune"),"myname3","myId3", "myAdd3"),
    (List("mumbai"),"myname2","myId1", "myAdd2")
)

val list2 = List(
    ("pune","myAdd1"),
    ("mumbai","myAdd2")
)

我想要跟随输出 -

List(
    (List(pune),"myname1","myId1", "myAdd1"),
    (List(pune),"myname2","myId2", "myAdd1"),
    (List("mumbai"),"myname2","myId1", "myAdd2")
)

如何使用scala获得以上输出?

2 回答

  • 0

    我'm still not sure what you want, but I think it'使用 list2 来过滤元组中第一个和第四个字段的 list1

    val list1 = List(
      (List("a1"), "b1", "c1", "d1"),
      (List("a1"), "b2", "c2", "d1"),
      (List("a1"), "b3", "c3", "d3"),
      (List("a2"), "b2", "c1", "d2")
    )
    
    val list2 = List(
      ("a1", "d1"),
      ("a2", "d2")
    )
    
    list1.filter({
      case (a::Nil, b, c, d) =>
        list2.contains((a, d))
      case _ =>
        false
    })
    
    /*
    Result:
      List(
        (List(a1),b1,c1,d1),
        (List(a1),b2,c2,d1),
        (List(a2),b2,c1,d2)
      )
    */
    
  • 0
    val list1 = List(
     (List("pune"),"myname1","myId1", "myAdd1"),
    
         (List("pune"),"myname2","myId2", "myAdd1"),
    
         (List("pune"),"myname3","myId3", "myAdd3"),
    
         (List("mumbai"),"myname2","myId1", "myAdd2"))
    
     val list2 = List(("pune","myAdd1"),("mumbai","myAdd2"))
    
     list1.filter(x=> list2 contains ((x._1(0), x._4)))
     // List((List(pune),myname1,myId1,myAdd1),
     //      (List(pune),myname2,myId2,myAdd1),
     //      (List(mumbai),myname2,myId1,myAdd2))
    

    但实际上,这只是您之前提出的几个问题的一个小变化 . 我希望你能从其他答案中学到足够的东西,以便能够自己完成这类工作 .

相关问题