我想出這個簡單的算法(轉換的元組的列表鍵的地圖集合列表),我需要在我的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