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

Posted

技术标签:

【中文标题】检查元组列表中的所有第一个元素是不是满足条件【英文标题】:Check if all first elements in tuple list satisfies condition检查元组列表中的所有第一个元素是否满足条件 【发布时间】:2021-12-07 05:45:27 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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 的建议进行了简化

【讨论】:

为什么不只是b_.subsetOf(a_) 考虑字符aababb。一个是另一个的子集吗?我不这么认为。 我忘了说角色是独一无二的,否则你是对的@jwvh

以上是关于检查元组列表中的所有第一个元素是不是满足条件的主要内容,如果未能解决你的问题,请参考以下文章

检查所有std :: tuple元素是否满足条件+设计问题

在 Seq 中找到满足条件 X 的第一个元素

如果满足条件,则将额外元素添加到 terraform 中的列表

选择满足 SQL 中条件的元组列表

js过滤数组中都为空的对象几种方式

C中的程序,它读取声音数据并检查给定数据是不是满足wav文件的先决条件