按第一个元素对元组列表进行分组
Group a list of tuples by their 1st element
假设我有一个包含 [("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
假设我有一个包含 [("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