我想检查一个列表是否是另一个列表的子集,基于其元组中的第一个元素。
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))})
您可以在输入列表中进行映射,只保留第一个元素,然后使用一些set功能来检查相等性:
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的建议进行简化