Home > Software engineering >  Check if all first elements in tuple list satisfies condition
Check if all first elements in tuple list satisfies condition

Time:10-21

I want to check if a list is a subset of another, based on the first element in its tuple.

subset(List(('a', 1), ('b', 2), ('c', 3)), List(('a', 4), ('b', 5))           // True
subset(List(('a', 1), ('b', 2), ('c', 3)), List(('a', 4), ('b', 5), ('f', 6)) // False

The size of the lists does not have to be the same. I've tried something like this, but with no luck

x.forall((char: Char, num: Int) => {y.contains((_,num))})

CodePudding user response:

You can map in the input lists to retain only the first element, then use some set functionality to check equality:

def subset(a: List[(Char, Int)], b: List[(Char, Int)]): Boolean = {
  val a_ = a.map(_._1).toSet
  val b_ = b.map(_._1).toSet
  b_.subsetOf(a_)
}

Update: Simplified based on suggestion from Luis

  • Related