我想出这个简单的算法(转换的元组的列表键的地图集合列表),我需要在我的F#代码:此算法已有高阶函数吗?
let MergeIntoMap<'K,'V when 'K: comparison>(from: seq<'K*'V>): Map<'K,seq<'V>>=
let keys = from.Select(fun (k,v) -> k)
let keyValuePairs = seq {
for key in keys do
let valsForKey = from.Where(fun (k,v) -> key = k).Select(fun (k,v) -> v) |> seq
yield key,valsForKey
}
keyValuePairs |> Map.ofSeq
例输入:
[ ("a", 1); ("b", 2), ("a", 3) ]
输出:
dict [ ("a", [1; 3]), ("b", [2]) ]
我在想这一定是已经存在于BCL或F#的高阶函数集中的东西吗?如果是的话,有人可以参考我吗?因为我敢肯定,我的代码是不是很有效,因为它是...
@FoggyFinder:更新 – ympostor