list - 按第一个元素对元组列表进行分组

标签 list haskell tuples grouping

假设我有一个由 [("ab", 1), ("ab", 2), ("ac", 3)] 组成的元组列表

使用 group函数会将此列表拆分为元组列表列表,如下所示:

[
  [("ab", 1)],
  [("ab", 2)],
  [("ac", 3)]
]

您将如何对忽略其中一个索引的元组进行分组,以便根据其中一个元素对它们进行分组:
[
  [("ab", 1), ("ab", 2)],
  [("ac", 3]
]
groupBy在这种情况下需要功能吗?

最佳答案

使用Data.List groupBy功能(docs):

Prelude> import Data.List
Prelude Data.List> let xs = [("ab", 1), ("ab", 2), ("ac", 3)]
Prelude Data.List> groupBy (\a b -> fst a == fst b) xs
[[("ab",1),("ab",2)],[("ac",3)]]

或按照@dfeuer 的建议:
...
import Data.Function
groupBy ((==) `on` fst) xs

关于list - 按第一个元素对元组列表进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814305/

相关文章:

python - 拥有列表列表 - 如何获取包含项目的列表的索引?

haskell - 使用管道将文件作为 HTTP 请求的源

haskell - haskell 会删除类型吗?

dictionary - swift - 创建空字符串 : tuple dictionary using literal

c# - 算法:检查 3D 数组中的条件

java - 如何在Tapestry中为复杂类型创建bean编辑模型

haskell - 实现相同功能的不同类型的映射列表?

php - PHP中有元组吗?

python - 如何忽略函数返回的其余参数?

list - 解压缩列表的谓词