gpt4 book ai didi

haskell - Haskell 中的 groupByKey - 如何通过函数对列表中的项目进行分组?

转载 作者:行者123 更新时间:2023-12-02 17:22:57 25 4
gpt4 key购买 nike

给定一个列表[v]和一个键控函数f::v -> k,我想生成一个 map Map k [v]。 Haskell 中是否存在这样的东西?

import Data.Map

groupByKey :: (v -> k) -> [v] -> Map k [v]

最佳答案

您可以使用fromListWith,如下所示:

import Data.Map
groupByKey :: (Ord k) => (v -> k) -> [v] -> Map k [v]
groupByKey getkey
= fromListWith (++) . fmap (\val -> (getkey val, [val]))

这样:

> groupByKey length $ words "hello there my good friend"
fromList [(2,["my"]),(4,["good"]),(5,["there","hello"]),(6,["friend"])]
>

关于haskell - Haskell 中的 groupByKey - 如何通过函数对列表中的项目进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47881350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com