【问题标题】:How to combine elements of two lists using scala?如何使用scala组合两个列表的元素?
【发布时间】:2015-01-19 07:34:44
【问题描述】:

我有以下列表:

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 获得以上输出?

【问题讨论】:

  • 我认为仅此示例不足以描述您要编码的逻辑。你能解释更多吗?
  • 你真的是指list2中的小写“add”吗?
  • @paul:我更正了。请看我的编辑

标签: scala


【解决方案1】:

我仍然不确定你想要什么,但我认为是使用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)
  )
*/

【讨论】:

    【解决方案2】:
     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))
    

    但实际上,这只是您之前提出的几个问题的微小变化。我希望您可以从其他答案中学到足够的知识,以便自己解决这类问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2023-03-19
      • 2018-01-10
      相关资源
      最近更新 更多