检查元组列表中的所有第一个元素是否满足条件

Check if all first elements in tuple list satisfies condition

我想根据元组中的第一个元素检查一个列表是否是另一个列表的子集。

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

列表的大小不必相同。我试过类似的方法,但没有成功

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

您可以映射输入列表以仅保留第一个元素,然后使用一些设置功能来检查相等性:

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_)
}

更新:根据 Luis

的建议进行了简化