【发布时间】:2020-11-21 15:46:14
【问题描述】:
我需要一个可以称为 uniqueBy 的函数,它会删除具有相同 snd 值,甚至没有像nubBy 那样保留其中一个。
例如,
uniqueBy [(1,1),(2,1)]
应该返回[],而
uniqueBy [(1,1),(1,1),(1,2)]
将返回[(1,2)]。
遗憾的是,此功能 uniqueBy 不存在,我似乎无法找到替代功能或自己实现它的方法,尽管我确信必须有一个简单的方法.
【问题讨论】:
-
这不会是一个库函数的简单应用。虽然它不是超级复杂,但您需要自己完成一些逻辑。
-
应该
uniqueBy [(1,1),(2,1)]返回[(1,1)]还是[]?以此类推是前者,但从你的描述来看是后者。是哪个? -
@WillNess 它应该返回 []
-
但下面的答案并没有这样做。它会返回第一个。也许你应该用澄清来编辑你的问题。
-
一种方法是通过
sort,然后groupBy,然后filter和map运行您的列表,以仅保留其中包含多个元素的组并将结果转换为将每个分组到头元素的snd字段中。现在你有了snd值的列表来摆脱元组,所以在原始列表中添加另一个filter,在谓词中使用elem。